Commit Graph

1172 Commits (master)

Author SHA1 Message Date
elie 4c39ecc84f missing symbol error fixed 2015-10-16 17:09:16 +00:00
elie 36e57b28ea missing module added 2015-10-14 19:09:05 +00:00
elie 11bbf5bc6f when pretty printing indices at rfc1902.ObjectType, quote only strings 2015-10-10 19:47:54 +00:00
elie e3e7f0d94e fixed crash at oneliner compatibility code on EOM response 2015-10-10 19:21:11 +00:00
elie 886428097d fix to ObjectIdentity->ObjectIdentifier attributes handover 2015-10-10 19:17:39 +00:00
elie 9feb221039 - added recursive resolution of ObjectIdentifier values at ObjectType
by converting it to ObjectIdentity
- a bunch of convenience shortcuts to rfc1902.ObjectIdentity added
  from rfc1902.ObjectType and rfc1902.NotificationType
2015-10-07 09:27:10 +00:00
elie 04c48681c8 stray debug removed 2015-09-28 07:49:54 +00:00
elie 775551912b fix to infinite loop at delV3User() 2015-09-28 07:48:39 +00:00
elie d2839c633e fix to RowStatus instantiation in case if uninitialized value is passed 2015-09-28 07:02:49 +00:00
elie d044736ce1 missing compatibility modules revived 2015-09-27 15:46:12 +00:00
elie 120a39ce88 var-bindings passing in asyncore API aligned with others 2015-09-27 15:27:20 +00:00
elie 969475aeb6 space 2015-09-27 15:26:40 +00:00
elie 3458bbb09c pysnmp.hlapi.asyncore._sync renamed 2015-09-27 11:32:10 +00:00
elie 5d5673dfcd * Asyncore and asyncio-based APIs reworked to become functions.
* Asyncio and Twisted API moved entirely into high-level domain to
  be aligned with other high-level APIs. This WILL BREAK backward
  compatibility for those apps that use Twisted API.
2015-09-27 10:26:25 +00:00
elie e7d5f9130b * fix to wrong callback being called on SNMP engine error
* removed cbCtx overriding when unwrapping, that is a source of errors
2015-09-27 07:13:37 +00:00
elie a7406b5795 * getNextVarBinds() signature changed
* possible fix to callback context unwrappping causing wrong callback
  being called
* removed cbCtx overriding when unwrapping, that is a source of errors
2015-09-27 07:11:17 +00:00
elie b0fd0d6dea post-move documentation and code fixes 2015-09-21 18:35:05 +00:00
elie a0d0d36ca6 more adjustments followed layout changes 2015-09-21 06:32:31 +00:00
elie c8b8797cac major revamp:
* oneliner API moved to pysnmp.hlapi.asyncore location
* all hlapi components now pulled from inner modules to into
  pysnmp.hlapi.asyncore.
* LCD configuration moved from SNMP apps classes to be stand-alone
* var-binds MIB<->protocol representation code moved from SNMP apps
  classes to be stand-alone
2015-09-20 18:40:58 +00:00
elie e8d1acbf63 core MIBs rebuilt with pysmi 2015-09-19 21:26:45 +00:00
elie 666bc8a5eb - Constraints assignment shortcut added to some base rfc1902 types (Integer,
Integer32, OctetString, Bits). That formally constitutes ASN.1 sub-typing.
- Base SNMP types documented
2015-09-19 13:46:22 +00:00
elie 0c2cc6ce87 sidebar menu rearrangement + typo fixes 2015-09-19 13:42:34 +00:00
elie 57f8ab1619 started documenting base types 2015-09-18 05:59:01 +00:00
elie 2a528e36ac asynchronous notification originator documented + fixes here and there 2015-09-17 23:16:45 +00:00
elie 573e4d749a async command generator documented + fixes 2015-09-17 19:55:32 +00:00
elie 1344d9030f * documenting async command generator
* minor fixes to markup
2015-09-17 06:47:38 +00:00
elie b1d6493e6b Sphinxed 2015-09-16 20:10:22 +00:00
elie ddc989155d * synchronous oneliner apps redesigned to offer Python generator-based
API along with a more comprehensive set of accepted parameters.
* massively documented (in Sphinx, NumPy style)
2015-09-14 05:20:24 +00:00
elie 2ec6a98998 missing .isFullyResolved() recovered 2015-07-14 19:14:57 +00:00
elie f308702c78 synchronous oneliner apps redesigned to offer Python generator-based
API along with more comprehensive set of accepted parameters
2015-07-06 21:30:04 +00:00
elie 51841e9cba try original MIB name when borrowing 2015-07-06 21:24:04 +00:00
elie eb5793084e handle the case of ObjectIdentity initialization with ObjectIdentity instance 2015-07-06 21:14:19 +00:00
elie 7e2076a1e0 - original asynsock transport and AsyncsockDispatcher renamed into
asyncore and AsyncoreDispatcher respectively to provide better hint
  to fellow devs on the underlying transport being used
- backward compatibility preserved through dummy asynsock symbols
2015-07-05 14:22:26 +00:00
elie acbac40624 * default /usr/share/mibs MIB source added
* compiler.addMibCompiler() now supports ifAvailable and ifNotAdded flags
* rfc1902.ObjectIdentity() now always tries to instantiate and attach
  MIB compiler to snmpEngine (if not done yet), also .addMibCompiler()
  renamed to .addAsn1MibSource() to signify the fact that MIB compiler
  is attached behind the scene
2015-07-04 16:30:27 +00:00
elie 252a909e8d enough changes for version bump - 4.3.0 2015-06-29 21:07:14 +00:00
elie 1c69ba85d0 provide public attributes even if pysmi not available 2015-06-29 21:01:32 +00:00
elie bc06477784 ObjectIdentity class additionally supports just a MIB module name
initializer in which case if resolves into either first or last symbol
in given MIB. Another new option is just a MIB symbol initializer without
specifying MIB module.
2015-06-21 13:24:35 +00:00
elie 5439bc3305 - a few additional MIB tree management methods added to MibViewController
to better address ordered nature of MIB tree nodes (namely, getFirst*,
  getLast* family of methods)
- rfc1902.ObjectIdentity() now accepts 'last' keyword parameter to
  position on last (otherwise, first) object in given MIB module.
2015-06-20 12:14:48 +00:00
elie 1e9fbab0dd removed RowStatus default value as it may collide with possible subclass
constraints
2015-06-06 08:40:05 +00:00
elie 13e908fba2 .setSyntax() added 2015-06-04 14:07:25 +00:00
elie 5cee646ddb use MibBuilder.loadTexts flag for initializing pysmi's genTexts one 2015-06-04 05:48:30 +00:00
elie 49cef7f6d3 fix to pysmi status interpretation 2015-06-03 18:31:29 +00:00
elie c95166ec97 implementation of the multiple targets functionality moved from .sendPdu()
to sendVarBinds()
2015-06-03 17:10:07 +00:00
elie 3d7406e02f catch and report possible MIB compilation errors 2015-05-31 21:39:01 +00:00
elie 27c1c8ef97 Major overhaul related to PySMI integration and Standard SNMP Applications
API redesign:
* MibVariable becomes ObjectIdentity and moves to pysnmp.smi.rfc1902
* ObjectType and NotificationType classes resempling corresponding MIB MACROs
  implemented
* SNMP Standard Applications and examples modified to support ObjectType
  and NotificationType parameters
2015-05-31 19:35:10 +00:00
elie cbcda15902 fix to missing REVISIONS MIB clause handling 2015-05-31 19:22:26 +00:00
elie 0e4f5be551 * read any of 'PYSNMP_MIB_PKGS', 'PYSNMP_MIB_DIRS', 'PYSNMP_MIB_DIR'
and append their contents to MIB search path instead of overriding
  existing path
* on MIB file access error, raise more concise exceptions than
  just SmiError
2015-05-31 19:21:48 +00:00
elie 7d5453e2af reverse previous change 2015-05-31 19:18:54 +00:00
elie adc3d01f41 alias Null to Unspecified symbol for convenience 2015-05-31 19:18:10 +00:00
elie c76c7c3dfb export ObjectIdentifier from pyasn1 2015-05-31 19:09:45 +00:00
elie ef82e705d9 fix to v2c->v1 trap OID translation: do not require trap OID to be
the default one
2015-05-26 08:24:50 +00:00
elie c8d5ad14e5 fix to function prototype 2015-05-18 15:33:28 +00:00
elie 087522e567 - Initial PySMI integration. Original ASN.1 MIBs could now be parsed, stored
at a local pysnmp MIBs repository and loaded into SNMP Engine.
- smi.MibBuilder will now raise more specific exceptions (MibLoadError,
  MibNotFoundError) on MIB loading problems rather than more generic
  SmiError.
- MibBuilder.addMibSources() convenience method added.
2015-05-17 21:01:43 +00:00
elie 1492a706cf optional configuration/MIB directory added to MIB search path
(~/,pysnmp/mibs) at MibBuilder
2015-04-27 20:01:32 +00:00
elie dba760bcc4 Parts of SMIv1 remnant MIBs added to provide complete compatibility with
SMIv1. Symbols defined in these MIBs only present in SMIv1 so they can't
be substituted with their SMIv2 analogues.
2015-04-27 17:14:49 +00:00
elie 17f6a3a71f fix to smi.builder to explicitly fail on any MIB file access error
(but ENOENT) and raise IOError uniformly on any directory/egg access
failure
2015-04-27 13:38:25 +00:00
elie 949907273d catch unresolved OID type when building var-binds 2015-03-18 06:56:49 +00:00
elie f617aa213f UDP/IPv6 support added to asyncio-based transport 2015-03-08 08:00:33 +00:00
elie 138690393d cosmetics 2015-03-08 07:56:46 +00:00
elie d771580217 base addressType defined 2015-03-08 07:56:12 +00:00
elie 38f96de6a8 make config.delTransport() returning detached transport object 2015-03-07 22:39:30 +00:00
elie 89cd19354b shutdown transport from closeTransport() 2015-03-07 22:36:29 +00:00
elie a455b4c3fa fix to smi.builder to explicitly fail on any MIB file access error but ENOENT 2015-03-07 18:00:57 +00:00
elie 63112ba8e0 secure boots file creation 2015-02-01 21:14:42 +00:00
elie 64e58ab33a ignore expired entries in expire() 2015-01-30 22:22:12 +00:00
elie 14d3feda48 possible memory leak fix 2015-01-30 17:01:58 +00:00
elie 4da385d8bc no xrange in Python3 2015-01-20 17:33:17 +00:00
elie 70bfa4a7ca missing AbstractTransportAddress added 2015-01-20 17:30:58 +00:00
elie ebb2fdad44 fix to default/null AgentAddress initialization 2015-01-20 17:03:41 +00:00
elie f40e30c3c8 fix to non-int slices (not supported in Python 2.4 2015-01-20 17:02:59 +00:00
elie f7bec47e52 fix to possible uninitialized snmpEngineID 2015-01-20 17:01:57 +00:00
elie c317a13711 - The asyncore-based transport subsystem extended to support POSIX
sendmsg()/recvmsg() based socket communication what could be used,
  among other things, in the context of a transparent SNMP proxy
  application. Technically, the following features were brought
  into pysnmp with this update:
  * Sending SNMP packets from a non-local IP address
  * Receiving IP packets for non-local IP addresses
  * Responding to SNMP requests from exactly the same IP address
    the query was sent to. This proves to be useful when listening
    on both primary and secondary IP interfaces.
2015-01-20 16:57:59 +00:00
elie 48fa5f20c6 SnmpEngineBoots may wrap over 2015-01-07 10:43:39 +00:00
elie 13f467b751 provide NullHandler for Python < 2.7 2015-01-07 10:40:34 +00:00
elie 36fdfef1fd first attempt to make SNMP Engine settings persistent across reboots 2015-01-07 10:28:09 +00:00
elie 092507d108 oneliner GETBULK Command Generator now strips possible excessive OIDs
off the bottom of returned var-binds table
2015-01-01 11:45:34 +00:00
elie c2fa258d32 * fix ignore impossible errorStatus
* fix to reset ErrorStatus==noSuchName on proxying
2014-12-19 20:13:02 +00:00
elie 9458b7f960 CommandGeneratorBase symbol added for compatibility 2014-12-15 23:21:31 +00:00
elie 10c09de22f * asyncio transport made compatible with trollius
* check futures for their cancellation status
2014-12-15 22:54:56 +00:00
elie 5135be0025 getNextVarBinds() will always cast passed var-binds into pyasn1 2014-11-16 16:11:31 +00:00
elie ff85d29404 fix to observer removal 2014-11-16 12:35:54 +00:00
elie 05d90bd132 missing exception fix 2014-11-05 23:16:08 +00:00
elie 963a6d644e initial support for asyncio network transport added 2014-11-04 20:21:48 +00:00
elie 08c9b6df27 fixes to debug messages 2014-11-04 20:20:47 +00:00
elie 62cc2b3fb0 * added support for logging into parent application's logger
* use logging framework for timestamps generation
2014-10-27 12:09:06 +00:00
elie 0e74a79062 built-in debugging is now based on Python logging module 2014-10-26 16:16:09 +00:00
elie dfec7984e1 fix to file descriptor leak at MibBuilder 2014-10-26 06:52:38 +00:00
elie a3191d9a35 CommandGenerator.getNext() & .getBulk() methods now support the
maxCalls kwarg to limit the maximum number of request-response
iterations to perform
2014-08-18 07:21:15 +00:00
elie c30181f6d8 make NotificationOriginator using MibInstrumentationController when expanding
Notification OBJECTS into Managed Objects Instances
2014-06-27 06:43:28 +00:00
elie 02913c4650 TRAP PDU agent address evaluation made lazy to improve startup time 2014-06-21 14:15:11 +00:00
elie cc9845a0d3 * unnecessary inheritance of AsyncNotificationOriginator() and
AsynNotificationOriginator() tranformed into a referenced object
  relationship
* made use of AsyncCommandGenerator.getMibViewController()
2014-06-17 15:24:48 +00:00
elie 9a8c4f722f .getMibViewController() impemented 2014-06-17 15:21:27 +00:00
elie 0f3b10f3aa pylint'ed 2014-06-17 15:19:53 +00:00
elie 483c99653c converted to the latest API that supports more data to be used 2014-06-17 05:46:57 +00:00
elie 98173faed9 use sendPduHandle term for clarity and unification 2014-06-16 20:52:38 +00:00
elie 106a2fe213 BULK API correction 2014-06-16 20:51:03 +00:00
elie 2f62ebd449 cosmetic fix 2014-06-16 16:37:02 +00:00
elie b8dbda56e8 fix to auth objects cleanup code 2014-06-15 14:21:45 +00:00
elie f1ee948b21 fix to asyncore-based transport not to use asyncore's cheap inheritance
from socket object what caused warnings.
2014-06-14 19:50:13 +00:00
elie 25fcfb3289 fix to bulk command options 2014-06-09 14:33:07 +00:00
elie e54f6f4be8 fix to CB stack unwinding 2014-06-09 14:28:29 +00:00
elie 8028defd66 sendNotification() API correction 2014-06-09 13:07:07 +00:00
elie 6f029f3261 API visual unification:
sendRsp() renamed into sendVarBinds()
sendRspPdu() -> sendPdu()
2014-06-09 10:06:22 +00:00
elie de2be96ea9 ContextData container introduced to the newest (async) API 2014-06-09 09:35:43 +00:00
elie 8bf882ca51 fix to authoritative engine side snmpEngineID discovery procedure:
respond with notInTimeWindows rather then with unsupportedSecurityLevel
at time synchronization phase
2014-04-23 11:53:49 +00:00
elie 451dd2c4e8 _sendRspPdu() method introduced to tap onto PDU processing
this is likely to be reworked
2014-04-04 15:09:40 +00:00
elie b272b371ed Major rewrite of native SNMPv3 CommandGenerator and NotificationOriginator
applications towards the following goals:
* avoid bonding with particular SNMP engine instance to promote single
  app instance using many SNMP engine instances
* support two APIs for working with request data: one operates on the
  whole PDU object while the other on PDU contents
* keep callback context data in stack rather than in stateful application
  cache
* newly introduced sendVarBinds() method offers a more functional and
  logical signatures.
* keep backward compatibility for all existing major/documented interfaces
2014-04-04 15:03:22 +00:00
elie 9210eb7d9e missing wrongLength and wrongEncoding SMI errors added 2014-03-25 20:30:38 +00:00
elie d290d508c2 This program is free software; you can redistribute it and/or modify
it under the terms of the BSD 2-Clause License as shipped with pysnmp.
2014-03-24 20:11:19 +00:00
elie 87e85a47b9 some more debugging added 2014-03-24 18:25:04 +00:00
elie 9a921150c4 Fix to SNMPv1/v2c message processing subsystem to make it serving
unique PDU request-id's in both outgoing and incoming confirmed
and response PDU types. Duplicate request-id's in unrelated PDUs may
cause cache errors otherwise.
2014-03-24 18:18:44 +00:00
elie 3c1ceee64a clean up request queue on pysnmp-level processing failure, not just
StatusInformation
2014-03-24 17:18:05 +00:00
elie f25e42f6b7 missing check for null scopedPDU added 2014-03-21 20:56:00 +00:00
elie ddaab1f097 do not cache snmpEngineId & snmpAdminString at CommandGenerator to let it
be reused with many different snmpEngines
2014-03-21 18:05:06 +00:00
elie d3a0d5d7e8 fixes to verify pyasn1 decoder.decode() return to withstand
broken SNMP messages or its components
2014-03-21 05:59:44 +00:00
elie fd8827d7cf fix to initialize errorIndex & errorStatus components of the resulting PDU 2014-03-17 20:16:36 +00:00
elie 5149080635 handle the case of deactivated sys.stderr 2014-03-15 14:27:44 +00:00
elie 26fa1f58a7 Fix to .clone() method of rfc1902.Bits class to make its signature
matching the rest of classes. This may broke code which used to pass
namedValue parameter positionally rather than binding it by name.
2014-03-15 13:32:27 +00:00
elie fae15cea55 fix to rfc1902.OctetString & Bits to base them on OctetString class to
make the 'fixed length' property working.
2014-03-15 09:38:49 +00:00
elie 3fc5ef5c9d * fix to OctetString.clone()'ing
* OctetString.subtype() is now carries over the 'fixed length' property
2014-03-15 09:12:30 +00:00
elie bff37d4573 amended the case of null debug writer 2014-03-15 08:05:57 +00:00
elie 3713220e45 handle the case of absent stderr stream at Debug printer 2014-03-14 21:10:38 +00:00
elie 930a554ed8 check for end-of-octets in version 2014-02-01 20:55:45 +00:00
elie bf6df2be5c missing module reference added 2014-01-29 21:06:31 +00:00
elie 26a9dd72ec fix to decodeMessageVersion() to withstand broken messages 2014-01-29 20:13:31 +00:00
elie c3853c9922 observer call added to processIncomingMsg() 2014-01-25 15:59:17 +00:00
elie e3fa34a1d2 fix to key localization loop termination condition 2014-01-10 10:45:35 +00:00
elie 06bd83b805 critical error fixed in key localization procedure for AES192/AES256/3DES
cyphers
2014-01-09 21:51:35 +00:00
elie 1b71ab0bdf passing request details to access control callback made simpler
and more stable based on request observer facility
2014-01-08 21:07:06 +00:00
elie 485dd54310 new public DgramSocketTransport.getLocalAddress() returns local endpoint
address underlying BSD socket is currently bound to
2014-01-08 20:18:00 +00:00
elie cce1c98c0a oneliner transport object now supports setLocalAddress() method to
force socket binding to specified local interface
2013-12-19 21:25:48 +00:00
elie 2b9faca109 * broadcast socket option can now be enabled with the .enableBroadcast()
call for any datagram-based transport (namely, UDP and UDP6)
* AbstractTransportDispatcher's jobStarted() and jobFinished() methods
  now accept optional 'count' parameter which is a way for an app to indicate
  how many responses are expected or have been processed in bulk
2013-12-12 18:47:52 +00:00
elie 4257c9da15 _verifyComponent() in newer pyasn1 takes keyword parameters 2013-12-02 13:34:17 +00:00
elie d9e66985f4 fix to BULK CommandGenerator to use the same nonRepeaters OIDs across
multiple GETBULK iterations so returned table for nonRepeaters columns
would hold the same var-bind
2013-11-23 22:14:12 +00:00
elie 0f08e5fa14 fix to rfc1902.Bits type to make it accepting hex and binary initializers,
cope with missing bits identifieirs at prettyPrint()
2013-11-23 18:29:09 +00:00
elie a402a7f151 - Internal oneliner apps configuration cache moved from respective
apps objects to [a singular] snmpEngine object. That would allow
  for better cache reuse and allow for a single app working with
  many snmpEngine instances.
- Legacy interfaces and APIs dropped in new oneliner AsyncCommandGenerator
  and AsyncNotificationOriginator classes (notice 'c' in Async). Original
  AsynCommandGenerator and AsynNotificationOriginator implementations
  rebuilt on top of these new optimized versions keeping all the legacy
  for compatibility reasons. These classes no more keep references to
  SnmpEngine what makes them reusable with many SnmpEngine class instances.
- Example on a single Transport Dispatcher use with multiple SnmpEngine's
  in oneliner AsyncCommandGenerator & AsyncNotificationOriginator basaed
  applicatons added.
2013-11-17 19:10:09 +00:00
elie 74c60bd882 Internal oneliner apps configuration cache moved from respective
apps objects to [a singular] snmpEngine object. That would allow
for better cache reuse and allow for a single   app working with
many snmpEngine instances.
2013-11-10 14:38:29 +00:00
elie d1467a7d1d initial revision 2013-11-10 10:19:58 +00:00
elie ce56f1b40f Execution Observer facility implemented to give app an inside view
of SNMP engine inner workings. This is thought to be a generic
framework for viewing (and modifying) various internal states
of pysnmp engine. Previously introduced non-RFC APIs (like
getting peer's transport endpoint) will be gradually migrated to
this new framework.
2013-11-09 22:01:33 +00:00
elie 81f1b2bbd1 sendRequestHandle made persistent across multiple iterations
of GETNEXT/GETBULK queries
2013-10-10 09:45:58 +00:00
elie 97da228f52 fix to sendNotification() error handling 2013-10-05 09:12:45 +00:00
elie 0e93c208de typo 2013-09-29 21:47:57 +00:00
elie b410a2ca1d fix to pass stateReference to registered app on unconfirmed notifications
reception (to let NotificationReceiver Apps browsing request details).
2013-09-29 21:19:23 +00:00
elie 1646d9de21 fixes to normalizeAddress() 2013-09-25 06:39:28 +00:00
elie c992feaa28 IPv6 address normalization moved into UDP6 transport 2013-09-24 22:00:06 +00:00
elie 85667591c6 forcibly zero ZoneID, FlowID and ScopeID components to make it
comparable with user-specified IPv6 endpoint
2013-09-24 14:03:09 +00:00
elie 0befb6f43c sometimes missing inet_ntop()/inet_pton() reimplemented in pure struct 2013-09-24 14:01:45 +00:00
elie d77cc4c0c4 cosmetics 2013-09-23 16:53:51 +00:00
elie b1f28b84ce added ctypes dependency for old Pythons on Windows 2013-09-23 11:51:59 +00:00
elie fbad5472d8 SNMP Engine object now has a snmpEngineID attribute exposed 2013-09-15 19:11:26 +00:00
elie 28397319b7 gracefully handle malformed SnmpEngineID coming from SNMPv3 header 2013-09-14 22:12:20 +00:00
elie a96c812eb4 minor changes to transport dispatcher's recvId logic 2013-09-08 21:46:51 +00:00
elie a2b420912d no default data routing function anymore 2013-09-07 14:28:40 +00:00
elie 690ea8ee6a * A single instance of transport dispatcher can now serve multiple
receivers (identified by IDs) chosen by a public data routing method.
* SnmpEngine.[un]registerTransportDispatcher() methods now accept optional
  receiver ID token to be used by transport dispatcher's data router. This
  allows for multiple SNMP engines registration with a single transport
  dispatcher.
* Relevant example added
2013-09-07 14:20:04 +00:00
elie 7c88869118 sockets now configured with SO_REUSEADDR option to fix possible
Windows error 10048.
2013-09-02 06:08:28 +00:00
elie f685bd3e88 fix to message processing module which used to refer to a bogus
stateReference in some cases what causes SNMP engine crashes
2013-08-24 23:13:55 +00:00
elie 0c1945c67b fix to SnmpAdminString, SnmpTagList, SnmpTagValue types to make them
supporting UTF-8 initializers.
2013-08-03 20:03:11 +00:00
elie d4a2fd350c pretty print contextEngineId in debug 2013-08-01 10:22:27 +00:00
elie f5802c42fb fixes to inet_ntop()/inet_pton() 2013-07-31 21:04:45 +00:00
elie 59413d9781 fix to inet_ntop()/inet_pton() support on Windows 2013-07-31 13:34:38 +00:00
elie 0be045fc5c fix to asyncore-based transport to work only with AsynsockDispatcher's
socket map and not to touch default asyncore's one
2013-07-03 17:06:21 +00:00
elie 361e7c61b9 whenever addTransport() automatically instantiates transportDispatcher,
it takes note of this and further counts all transport registration.
If delTransoport() seems that transportDispatcher was automatically
instantiated, it shutdowns it automatically whenever registered
transport count reaches zero.
2013-06-30 16:00:14 +00:00
elie 543821f4a8 overload closeTransport() to get a chance to close UNIX pipe on transport
shutdown
2013-06-30 15:32:46 +00:00
elie 88bd160e7b fix: do not close transport whenever unregistering it at dispatcher 2013-06-30 15:27:33 +00:00
elie 9c7ed7cd8f move common methods to AbstractTransport 2013-06-30 15:23:26 +00:00
elie efc55fdcbb overload closeTransport() to close UDP port on transport shutdown 2013-06-30 15:19:38 +00:00
elie fa7a8350d5 fix: closeTransport() should invoke stopProtocol() 2013-06-30 15:17:52 +00:00
elie 477161b151 cache and uncache usmUserSecurityName for debugging purposes 2013-06-26 16:43:45 +00:00
elie 740419724f fix to octet string typing (used to throw an exception) 2013-06-26 15:50:51 +00:00
elie 64824fd736 exception re-raising improved at asynsock/twisted dispatchers so that
original traceback is preserved and reported
2013-06-26 15:44:44 +00:00
elie 2ea76b7bd3 disptacher vs transport compatibiilty verification moved into
base transport class
2013-06-21 06:34:22 +00:00
elie c3da4f9fff credential caching improved to allow unbalanced add/del configuration
calls by use counting
2013-06-12 08:08:27 +00:00
elie e7afecac21 use format_exception() 2013-06-11 20:00:11 +00:00
elie 7fdc1203fc FSM exception handling reworked 2013-06-11 06:41:54 +00:00
elie 47e374ea6b Fix to usmUserSecurityName table column implementation -- automatic value
generation from index value removed.
2013-06-10 22:44:48 +00:00
elie 48b2a9d7bf Fix to SnmpUSMSecurityModel._sec2usr() - raise NoSuchInstance error
to emulate MIB lookup failure. Previous version of the code always
succeeded returning securityName on failure. That screwed new row
creation logic.
2013-06-10 22:36:05 +00:00
elie 51028802f7 fix to exception message formatting 2013-06-10 20:19:17 +00:00
elie ce603f3f8a undefined variable 2013-06-10 19:04:38 +00:00
elie ec8b127d86 do not re-raise exceptions with original traceback as it breaks
py3k compatibility
instead log the original traceback into debug routine
2013-06-10 15:56:16 +00:00
elie 394d8d9c24 exception re-raising improved at MibInstrumController.flipFlopFsm() so
that original traceback is preserved.
2013-06-10 14:25:47 +00:00
elie ee21691294 raise KeyboardInterrupt for backward compatibility 2013-06-08 10:50:35 +00:00
elie bc0048832f unused variables, imports; wrong indentation; undefined prototype attribues
all the things that bothers linter
2013-06-04 06:26:02 +00:00
elie b7c4ef6e38 traceback formatting improved 2013-06-04 06:06:23 +00:00
elie 5df996f4cf missing imports, non-existing variables as suggested by linter 2013-06-03 21:58:52 +00:00
elie 31cdd5d31a config.addSocketTransport() helper renamed into config.addTransport()
and improved by automatically instantiating compatible TransportDispatcher
making it dispatcher-agnostic. As an additional bonus, application may not
call registerTransportDispatcher() as it would be called by addTransport().
2013-06-01 12:15:58 +00:00
elie e5276292e5 Oneliner UsmUserData() and CommunityData() classes now support clone()'ing
to facilitate authentication data management in user applications.
2013-06-01 10:08:33 +00:00
elie 29609e6454 Asyncore-based dispatcher attempts to use poll() whenever available
on the platform. It would help handling a really large number (>1024)
of file descriptors.
2013-05-26 19:56:18 +00:00
elie 99b2e05957 fix to online dict keys removal at uncfg() 2013-05-26 09:08:18 +00:00
elie ff0c9bd4f2 removed securityName parameter from delV3User() 2013-05-25 21:25:10 +00:00
elie 00a0839d4c the userName parameter is now fully separated from securityName at
usmUserTable.
2013-05-25 15:05:14 +00:00
elie 75d20f4867 replace contextEngineId with securityEngineId as addV3User() 2013-05-25 10:32:44 +00:00
elie a0894c9008 the SnmpV3MessageProcessingModel.getPeerEngineInfo() method is implemented
to communicate discovered peer SNMP engine information to SNMP apps what
can be used for fine usmUserTable configuration.
2013-05-25 09:43:28 +00:00
elie bdaef1032a Oneliner transport target classes now support the getTransportInfo()
method that returns network addresses used on protocol level
2013-05-25 09:11:46 +00:00
elie 85581d59e3 contextEngineId parameter of auth.UsmUserData() renamed into
securityEngineId as it's semantically correct
2013-05-21 06:03:15 +00:00
elie b2d46549dd SNMP credentials management reworked to allow multiple securityNames's in
snmpCommunityEntry and usmUserEntry tables. Changes made to addV1System(),
addV3User() functions as well as to their oneliner's wrappers.
2013-05-18 13:26:49 +00:00
elie 2ba0737a51 break cyclic references at CommandResponder and NotificationReceiver apps
through close() method
2013-05-13 20:12:28 +00:00
elie 9d8b1bda3b min(key=key) is not supported by older Pythons 2013-05-12 19:29:55 +00:00
elie 2aa7fa3e53 AsynCommandGenerator.makeReadVarBinds() generalized into a new
makeVarBinds() method which replaces somewhat redundant code at setCmd()
and AsynNotificationOriginator.sendNotification().
2013-05-09 10:37:53 +00:00
elie a705915f93 * AsynCommandGenerator.uncfgCmdGen() & AsynNotificationOriginator.uncfgCmdGen()
methods now accept optional authData parameter to remove specific entries
  from LCD. This can be useful for modifying security parameters for
  specific securityName.
* AsynNotificationOriginator.cfgCmdGen() does not take into account
  securityModel & securityLevel when reducing LCD access via addTrapUser().
  This improves LCD consistency on sparse add/del operatons but also
  does not let you to configure different securityModels per securityname
  at VACM though the cfgCmdGen() wrapper.
2013-05-09 07:39:45 +00:00
elie 552d7336aa Fix and significant logic rework of snmpCommunityTable to make it working
in both Generator and Responder modes and better follow RFC2576  requirements on sequential entries lookup and selection. As a side effect,
untagged snmpCommunityTable entries will *not* match tagged
snmpTargetAddrTable entries and vice versa.
2013-05-05 11:11:51 +00:00
elie 04c1a577a8 Multi-lingual capabilities of all CommandGenerator & NotificationOriginator apps re-worked and improved. For instance it is now it's possible to run getBulk() against a SNMPv1 Agent invoking built-in SNMP Proxy behind the
scene.
2013-05-05 10:41:36 +00:00
elie fe72b2e9a1 fix to exceptions handling at MsgAndPduDispatcher.sendPdu() to avoid
sendPduHandle miss (followed by system crash) on cache expiration run
2013-05-04 14:59:28 +00:00
elie ea13dfacf7 the snmpCommunityTable row selection improved to follow RFC2576, clause 5.2.1 2013-05-04 12:12:49 +00:00
elie 92650048a1 debug issue fixed 2013-05-04 10:45:10 +00:00
elie 32d35747ba format subseconds 2013-04-17 20:32:36 +00:00
elie 35ad15e048 delV3User() function improved to drop all rows from USM table that
were cloned from the target one
2013-04-17 06:51:56 +00:00
elie c147044d7d Change to rfc2576.v1tov2() logic: errorStatus = noSuchName is now translated
into rfc1905.noSuchObject exception value for *all* var-bindings.
Although RFC2576 does not suggest error-status -> v2c exception translation,
historically pysnmp used to perform it for a long time so we can't easily
stop doing that.
2013-03-16 11:57:24 +00:00
elie e33ad2b65a Fix to twisted/udp non-default local endpoint binding features. Common
socket ('host', port) notation is now supported.
2013-03-15 21:29:59 +00:00
elie ff34cc9494 timing reporting in debug mode improved 2013-03-15 20:54:33 +00:00
elie 85f9557f88 * explicit twisted dispatcher's timer resolution (of 1 sec) removed to make
use of global default of 0.5 sec.
* intermediate handleTimeout() method replaced with lambda
2013-03-15 20:53:22 +00:00
elie 7fc7d79936 fix of rounding error to base I/O dispatcher's next timer call calculation 2013-03-15 20:50:24 +00:00
elie 14342b12b1 timestamps to log messages added 2013-03-15 18:40:33 +00:00
elie 59c5d5090a the $PYSNMP_MIB_DIR & $PYSNMP_MIB_DIRS & $PYSNMP_MIB_PKGS path separator
made platform-specific.
2013-03-13 09:26:31 +00:00
elie 4226df062f typos fixed 2013-02-09 20:08:52 +00:00
elie feeea2068b missing import added 2013-02-09 13:41:43 +00:00
elie 47959808a9 Standard SNMP Apps and built-in proxy now ignores malformed errorIndex
value.
2013-02-07 20:05:13 +00:00
elie 1b01051824 4.2.5 2013-02-07 20:02:46 +00:00
elie 08ad1e5420 Packet-level SNMP API (pysnmp.proto.api) getErrorIndex() method can now
be instructed to ignore portentially malformed errorIndex SNMP packet
value what sometimes happens with buggy SNMP implementations.
2013-02-07 20:02:12 +00:00
elie d918595551 VACM modules converted from a function into an object to let it keep
state (caches) in the future
2013-01-05 20:25:51 +00:00
elie 24d1327c26 remove \r\n from sysDescr.0 2013-01-05 15:14:00 +00:00
elie a0399991a8 fix to bool(ErrorIndicationReturn()) 2013-01-05 14:48:51 +00:00
elie 33293cacbb cast non-default contextName into pyasn1 object to avoid Py3K comparation
issues
2013-01-05 14:14:07 +00:00
elie 2c4175582a typo 2012-12-29 08:52:09 +00:00
elie a99977146e make sure user callback object is supplied before calling it 2012-12-29 08:49:37 +00:00
elie d1479dbbbc at AsynNotificationOriginator.sendNotification()
* the notificationType param is no more optional
* the varBinds param is now truly optional
2012-12-28 17:27:39 +00:00
elie 1a0ce4966b memory leak fixed at oneliner cache of already configured targets 2012-12-22 17:23:24 +00:00
elie fecffdd978 catch and mute possible failure of getsockname(), that seems to happen
on Windows only so far
2012-12-20 14:06:19 +00:00
elie b82722901e report package version on debugging code initialization 2012-12-20 13:04:11 +00:00
elie 3212e6d897 typos 2012-12-16 12:31:45 +00:00
elie 927f3f9623 * The missing functionality of passing Response PDU contents of INFORM
request is now implemented at Notification Originator app. The return
  value of NotificationOriginator.sendNotification is now a composite object
  that includes errorStatus, errorIndex and varBinds.
* The missing functionality of passing lookupNames & lookupValues params
  to Notification Originator is now implemented. It may make sense for
  INFORMs.
* The missing functionality of passing contextName to oneliner
  version of NotificationOriginator.sendNotification is now implemented.
2012-12-15 22:29:56 +00:00
elie d6c3d02504 standard SNMPv3 Apps hardened to catch protocol-related exceptions and
report them as errorIndication's
2012-12-14 20:37:02 +00:00
elie 8b4d47481b when calling for PDU generation, make use of contextName passed
with authData *if* it is not passed through command-line.
this is purely to preserve backward compatibility.
2012-12-14 12:22:29 +00:00
elie 064680e2d4 commented 2012-12-14 12:20:00 +00:00
elie 63ffe29730 major contextEngineId/contextName related rework
* contextEngineId/contextName stored at authData now used only
  for USM configuration
* contextEngineId/contextName sent in PDU can now be passed through
  *Cmd() methods arguments
2012-12-14 08:17:43 +00:00
elie 3b9c11ead7 SMI exceptions are supposed to carry indices of failed var-bind component 2012-12-13 17:02:41 +00:00
elie 0d03e50e50 * probe setValue() rather than instrumClone() at terminal node value object
* group SNMP table management exceptions under TableRowManagement class
* preserve table row management exceptions propagation through MIB nodes
  tree to make row operartions working again
2012-12-05 20:57:40 +00:00
elie 0726dd9333 do not catch uninitialized-value exceptions at getValue()
as it has been moved into snmp engine message serialization
harness (leaving MIB instrumentation an ability to return
uninitialized items)
2012-12-04 08:07:10 +00:00
elie a8bccd7720 catch possible exceptions on pyasn1 encoder invocation
report SerializationError indication in those cases
addded DeserializationError indication alias to Parse Error for clarity
2012-12-04 08:02:20 +00:00
elie 576e0ebba9 * Fix a couple of bugs at MibTable* logic involved for table instances
creation.
* Fix to Management Instrumentation code to handle cases of non-initialized
  or not-compliant-to-constraints Managed Objects Instances.
2012-12-02 21:38:29 +00:00
elie 6ba6788229 - AbstractMibInstrumController class added as a base class for all possible
kinds of Management Instrumentation controllers
- MibInstrumController.getMibBuilder() added
2012-12-02 15:00:06 +00:00
elie 87dfc3408e the contextName parameter of context.SnmpContext() made optional 2012-12-02 14:56:23 +00:00
elie 1d37c6ea78 the missing functionality of NOTIFICATION-TYPE objects being looked up
at local Management Instrumentation and attached to TRAP/IMFORM message
by Notification Originator is now fully implemented.
2012-11-28 21:50:09 +00:00
elie e4df514d2e use system uptime and trap OID values from SNMP engine's instrumentation
rather then from SNMP context
2012-11-26 22:21:32 +00:00
elie ea9f654e5c cast additionalVarBinds into ObjectIdentifier type 2012-11-25 16:48:46 +00:00
elie 4db868a57d fix to isAccessAllowed() error handling at NotificationOriginator. System
used to crash on access denied condition
2012-11-25 16:34:08 +00:00
elie 645afc069a __context -> snmpContext for clarity 2012-11-24 21:56:42 +00:00
elie 8b1809d305 cast contextEngineId into proper type 2012-11-24 21:03:43 +00:00
elie dc06658aac unnecessary *MibSource explicit initialization calls removed at MibBuilder 2012-11-24 11:49:57 +00:00
elie 36aa9d89b2 Attempt to convert Windows style EOL into UNIX ones in MIB source
modules appeared to be unnecessary and even destructive to modules
data in some cases. So the convertion code removed altogether.
2012-10-14 20:41:26 +00:00
elie d4bd0fb5c3 oops, wrong place for rc 2012-10-11 10:04:34 +00:00