Releases: lextudio/sharpsnmplib
9.0.0
- API changes to match SharpSnmpPro.Mib.
- Full upgrade to .NET 4.5+. Both .NET 3.5 and .NET 4.0.* support is removed.
- SNMP v3 performance improvement.
- Added ISnmpMessage.GetResponseAsync method which is awaitable.
- Fixed a time sync bug in Messenger.BulkHasNext.
- Fixed ID generator thread-safe bugs (#10).
- Fixed the agent sample so TRAP v2 message can pass authentication properly.
- Added Unsigned32 compatibility.
- ObjectIdentifier constructor now accepts zero length input ID array, where it is assumed to be constructing "0.0".
- Added more examples on sending SNMP v3 version of INFORM and TRAP v2 packets.
- Removed all obsolete items from API surface.
- Other API cleanup to get ready for .NET Core and UWP.
TritonMate Refresh release (8.5)
This is a bug fix release and NuGet only.
https://www.nuget.org/packages/Lextm.SharpSnmpLib/8.5.0
It is a NuGet package that enables
- .NET 4.0 and above (SharpSnmpLib.Portable.dll + SharpSnmpLib.Full.dll)
- Xamarin.iOS Unified (SharpSnmpLib.Portable.dll + SharpSnmpLib.iOS.dll)
- Xamarin.Android (SharpSnmpLib.Portable.dll + SharpSnmpLib.Android.dll)
- Portable Class Library (SharpSnmpLib.Portable.dll)
Note that .NET 4.0 users need KB2468871 to be applied.
.NET 3.5 support is not included in this release.
CF support is not included in this release.
SharpSnmpLib.Mib is obsolete by SharpSnmpPro.Mib.
This version has been tested on Mono/OS X as well as previous supported platforms.
Known Issues
SharpSnmpLib.Full might throw exceptions on OS X
Breaking Changes
- Classes are reorganized so as to meet PCL requirements.
IP
class is rewritten to meet PCL requirements.IP
constructor signature is changed.Discoverer
class andListenerBinding
class are modified to useTask
.MessageParams
class is removed.CryptoKeyCache
is introduced to speed up encryption and decryption.TimeTicks.ToString
uses a different format.- New public classes
MalformedPdu
- New public methods
ByteTool.PackMessage
Header
's constructorHelper.ToIPAddress
andHelper.ToPhysicalAddress
- Setter of
SecurityParameters.IsInvalid
PrivacyProviderExtension.GetScopeData
Sequence.GetLengthBytes
- Obsolete Classes
DefinitionType
IConstruct
IDefinition
IEntity
IModule
IObjectRegistry
IObjectTree
ITypeAssignment
SearchResult
TritonMate release (8.0)
- Work item 7239 Bug in SecureSnmpContext.HandleMembership method is closed.
- Work item 7240 System.ArgumentException truncation error for 32-bit integer coding is closed.
- Work item 7241 v1 walk throws exception on bad(?) data from printer is closed.
- Work item 7243 SNMP v3 discovery bug is closed.
- Work item 7245 Exception on V3 Inform discovery messages is closed.
- Work item 7253 Report engine time exceeds RFC max value is closed.
- Samples are enhanced according to RFC 3414.
- Added official Xamarin.iOS (MonoTouch) and Xamarin.Android (Mono for Android) support.
- Engine assembly is ported to .NET CF.
- Implemented ifTable in snmpd.
- Name to OID resolution is added in snmptranslate sample.
- Added BytesViewer sample.
- Library re-licensed under MIT/X11.
Please ignore the "rc" names in the download files, as they are stable.
Breaking Changes
IEntity.ModuleName
is removed. Replaced byIConstruct.Module
.IModule.Types
is removed. It is no longer needed.EngineGroup.ReportCount
is removed. Please useEngineGroup.NotInTimeWindow
.- Signature of
EngineGroup.IsInTime
is changed. ISnmpContent.HandleAuthenticationFailure
is removed. It is no longer needed.- Signature of one constructor of
CompilerError
is changed. ObjectIdentifierType.ModuleName
is removed. Please useIConstruct.Module
.SnmpType.UInt32
is removed. It is no longer needed.
New APIs Added
IEntity.ParentModule
is added.Module
,Line
, andCharPositionInLine
are added toIConstruct
.- A new constructor is added to
Discovery
to support more discovery message types. EncryptedScope
and a new constructor are added toMalformedMessage
.- Several new items are added to
Messenger
to support more discovery message types and also OID to error message conversion. - Several new items are added to
EngineGroup
to implement SNMP v3 required counters. - Constructors that accept
Int64
are added toCounter32
andGauge32
. - A new constructor is added to
InformRequestPdu
to assist discovery message generation. OctetString.IsNullOrEmpty
is added.SecurityParameters.IsInvalid
is added.
BigDipper Refresh release (7.5)
This is a bug fix release (7.5.10510.1) with limited breaking API changes.
- Work item 7224 Refactor core classes to consider byte array length while parsing existing packets is closed.
- Work item 7225 RFC2021
TimeStamp
Error is closed. - Work item 7226 Create a new MIB compiler based on ANTLR is closed.
- Work item 7227 New compiler does not support some comment style is closed.
- Work item 7230 Exception during walk: unsupported data type: opaque is closed.
- Work item 7232 Trap V3 authentication fails when system uptime over 25 days is closed.
- Work item 7234
ISnmpMessage.BeginGetResponse/EndGetResponse
pair doesn't work inTask.FromAsync
is closed.
Based on change set
https://github.com/lextm/sharpsnmplib/tree/de58f7c050a0976654e7ee4b90a9217e99af6ae3
*Mono for Android assemblies are based on lextm@c83387c
Mono for Android assemblies under LGPL are removed from this release. Please go to TritonMate (8.0) which contains updated ones under MIT/X11 license.
Tested on
- Windows 7 SP1
- Windows 8 Release Preview
.NET Framework support policy is changed, so please read this KB article first.
- Re-licensed part of the code base under permissive licenses (MIT/X11 and BSD 3 Clause).
Core assemblies changes from 7.0
New Assembly
.Engine is added and .Pipeline/.Objects namespace are moved to this new assembly.
New Public Types
No new type is added in SharpSnmpLib, except those types from System.Tuples project.
SharpSnmpLib.Mib is rewritten, so except old classes from previous version, such as ObjectRegistryBase
derived classes and others, the low level classes are completely different, such as MibModule
.
Changed Interfaces (Breaking)
The following interfaces are changed,
IConstruct
ITypeAssignment
IEntity
IObjectRegistry
IObjectTree
IAuthenticationProvider
Obsolete and Deleted Classes (Breaking)
DefaultObjectRegistry
(Resolution: UseSimpleObjectRegistry
.)GetResponsePdu
. (Resolution: UseResponsePdu
.)Integer64
. (Resolution: not needed by #SNMP any more. If need it, use the old class from a previous release.)- Low level classes under .Mib (Resolution: Try to use the new classes.)
Removed Methods (Breaking)
ByteTool.PackMessage()
(Resolution: Use the new overload.).ctor
that acceptsStream
forISnmpData
derived classes (Resolution: Use the newctor
that acceptsStream
in each classes.)IObjectRegistry.Decode
andIObjectTree.Decode
. (Resolution: Wait till #SNMP 8.)- Two constructors of
Sequence
class. (Resolution: Use other constructors.) - Many methods in
StreamExtension
class. (Resolution: Either use the new overload, or alternative methods in other classes.) ctor
ofISnmpMessage
derived classes. (Resolution: Use newctor
instead).SnmpMessageExtension.PackMessage
. (Resolution: Use new overload).IAuthenticationProvider.ComputeHash
. (Resolution: Use new methods).AuthenticationProviderExtension.VerifyHash
andCleanAuthenticationParameters
. (Resolution: Use new methods.)- Other changes under .Mib namespace.
BigDipper release (7.0)
Tested on
- openSUSE 11.4 x86,
- Windows Vista SP2 x86,
- Windows 8 Developer Preview x86.
- SharpSnmpLib.Controls.dll is removed. Its components are moved to SharpSnmpLib.dll.
- Asynchronous support is added to ISnmpMessage derived classes.
- Compiler core is enhanced.
Core assemblies changes from 6.1.1:
Although in this release we only performed cleanup, a lot of the corners are touched heavily.
New Public Types
This query return a lot, but in fact only several new types are added to enhance the MIB compiler, such as
MaxAccess
Status
and some extension classes to define extension methods which simplifies the code base a lot, such asSnmpDataExtension
StreamExtension
AuthenticationProviderExtension
EndPointExtension
Most of classes returned from this query are in fact moved from old places to new ones, such as
ITypeAssignment
moved from .MibLevels
moved from .Security
Changed Interfaces (Breaking)
The following interfaces are changed,
- ISnmpData
1, IDefinition - IModule
- IObjectRegistry
- IObjectTree
- ISnmpMessage
- IAuthenticationProvider
Obsolete and Deleted Classes (Breaking)
- GetResponseMessage under .Messaging.(Resolution: Use ResponseMessage.)
- GetResponsePdu. (Resolution: Use ResponsePdu.)
- Integer64. (Resolution: not needed by #SNMP any more. If need it, use the old class from a previous release.)
- Integer under .Mib
Removed Methods (Breaking)
- ByteTool.ToBytes(ISnmpData) (Resolution: ToBytes is now an extension method in SnmpDataExtension class.)
- ISnmpData.ToBytes() (Resolution: ToBytes is now an extension method in SnmpDataExtension class.)
- All ISnmpData derived classes have ToBytes method. (Resolution: ToBytes is now an extension method in SnmpDataExtension class.)
- Header.Header(Integer32, Integer32, OctetString, Integer32) (Resolution: Use other constructors.)
- MalformedPdu.Instance (Resolution: Construct objects instead of using this default one.)
- SearchResult.GetStringOf(ObjectIdentifier, IObjectRegistry) (Resolution: Use 1. 1. ObjectIdentifier.ToString(IObjectRegistry).)
- OctetString.ToDateString() (Resolution: Use GetRaw() to get the raw bytes and then parse on your own.)
- Sequence.ctor(IEnumerable) (Resolution: Use other constructors.)
- Sequence.Count (Resolution: Use Sequence.Length.)
- ISnmpMessage.Pdu, RequestId, MessageId. (Resolution: Moved to SnmpMessageExtension as extension methods.)
- All ISnmpMessage derived classes Variables, RequestId, Pdu, MessageId, Community, GetResponse(*). (Resolution: Moved to SnmpMessageExtension as extension methods.)
- SnmpMessageExtension.GetSocket(EndPoint) (Resolution: Moved to EndPointExtension as extension method.)
- InformRequestMessage.GenerateResponse() (Resolution: Use the pipeline.)
- TrapV1Message.Send(*) (Resolution: Moved to SnmpMessageExtension as extension method.)
- TrapV2Message.Send(*) (Resolution: Moved to SnmpMessageExtension as extension method.)
- IAuthenticationProvider.ComputeHash, VerifyHash. (Resolution: Moved to AuthenticationProviderExtension class as extension methods.)
- One of User constructor. (Resolution: Use the remaining constructor.)
Obsolete Methods (Breaking)
Some constructors of GetNextRequestPdu, GetRequestPdu, SetRequestPdu. (Resolution: Use the other constructors.)
HoneyCell Refresh release (6.1.1)
This is a bug fix release.
- Bug 7213 is resolved: Browser notification panel throws ArgumentNullException.
- Bug 7217 is resolved: Agent-side bug in ByteTool.GetRawBytes.
HoneyCell release (6.0)
- Ubuntu 10.10 is officially supported.
- Changed all ISnmpMessage derived classes ToByte implementation.
- Added a new exception, PortInUseException.
- Reimplemented GetBulkMessageHandler who now fully supports GET BULK messages.
- Enhanced the pipeline to better match SNMP RFC documents (1157 and 3416).
- Fixed WSAECONNRESET socket exception handling.
- Fixed a browser bug (wrong tag generated for v3 profile).
- Fixed IP.Equals bug.
- Merged changes from DockPanel Suite 2.4.
- Closed work item 7189. SNMP v3 TRAP message support is added and tested.
- Closed work item 6826. SNMP v3 INFORM is supported.
Core assemblies changes from 5.2:
In this release the core classes and namespaces are heavily updated.
New Public Types
The following are new,
- ResponsePdu: replace GetResponsePdu.
- ResponseMessage: replace GetResponseMessage.
- IListenerBinding: interface for ListenerBinding.
- PortInUseException: an exception raised when a binding is already in use.
Classes under Lextm.SharpSnmpLib.Objects and Lextm.SharpSnmpLib.Pipeline are actually moved from Lextm.SharpSnmpLib.Agent.
New Public Namespaces
Only two are new,
- Lextm.SharpSnmpLib.Objects: sample SNMP objects for snmpd.
- Lextm.SharpSnmpLib.Pipeline: SNMP pipeline components.
Changed Interfaces (Breaking)
The following interfaces are changed,
- ISnmpMessage
- IAuthenticationProvider
- IPrivacyProvider
Renamed Classes (Breaking)
- Helper: renamed to SnmpMessageExtension.
- SnmpDemon: renamed to SnmpEngine.
- DemonObjects: renamed to EngineGroup.
Obsolete and Deleted Classes (Breaking)
- ProviderPair: removed. Please use IPrivacyProvider derived classes directly.
- GetResponseMessage: Please use ResponseMessage instead.
- GetResponsePdu: Please use ResponsePdu instead.
- Manager: Please use Messenger instead.
- Manager*ListenerAdapter: Please use classes under Lextm.SharpSnmpLib.Pipeline to construct a pipeline to handle incoming messages. Browser.exe is the sample.
Modified Methods (Breaking)
- ByteTool.Convert: due to the new implementation, you must pass in byte[] instead of IEnumerable.
- OperationException.ToString: the implementation is changed.
- Discovery.Discovery: add one more parameter. You can also use Messenger.NextDiscovery to construct the object.
- ISnmpMessage derived classes: ProviderPair is replaced by IPrivacyProvider in constructors.
Obsolete Methods (Breaking)
- OctetString.ToDateString: Will provide a better conversion in future release.
- InformRequestMessage.GenerateResponse: Please use classes under Lextm.SharpSnmpLib.Pipeline to construct a pipeline to handle incoming messages. Browser.exe is the sample.
- Messenger.GetTable: no longer supports this method. It can still be used to query simple tables, but for complex tables, you need to implement your own table retrieval algorithm.
- UserRegistry.Default: Please use new to construct objects.
- Levels.None: removed. Please use 0 instead.
CatPaw Refresh release (5.2)
Bug fix release.
Only CF 3.5 assembly is heavily changed compared to 5.0. All other assemblies are identical.
CatPaw release (5.0)
CF build is based on CodePlex Change Set 47068.
Changes from 4.0:
- The Agent and the Browser now support SNMP v3.
- The Agent, the Browser and the Compiler supports both .NET/Windows and Mono/openSUSE now.
- VB.NET samples are added.
General
You can see a lot of highlighted areas, because
- We migrated to Visual Studio 2010, so many generated code has been changed.
- We changed a lot of GUI code in order to support Mono/openSUSE.
- Agent side SNMP v3 support introduces many underlying changes in the Library.
- Browser side SNMP v3 support introduces a few changes in itself.
New Core Public Types
Only three new types are introduced in 5.0,
- MalformedMessage: It is used to represent an SNMP v3 message received by the listener, which cannot be decrypted successfully due to several reasons.
- DecryptionException: An exception raised when an SNMP v3 message cannot be decrypted successfully.
- ListenerBinding: We introduce this class, so you can ask a Listener class to monitor on several IP address:port number bindings.
New Assemblies
Only one assembly is added to our binary release package. That is snmptranslate, a utility to show how to use compiled MIB documents to do OID translation.
New Public Types
We have a few new types here except for the three mentioned above,
- OutputPanelAppender: This is a custom log4net appender used in the Browser and the Compiler. It logs all necessary information into the output panel.
- RollingFileAppender: This is a custom log4net rolling file appender that outputs log file names in IIS similar pattern.
Breaking Changes
Removed types are,
- BitString
- Bool
- GeneralString
- Real
Moved types are, - ISnmpMessage
- IEntity
- IDefinition
- IModule
- IObjectRegistry
- IObjectTree
- SearchResult
- DefinitionType
- IConstruct
SquareRoot release (4.0)
- #SNMP MIB Browser is updated to better work with snmpd.
- Issue 5777 is resolved.
- Issue 5020 is resolved.
- #SNMP Agent project (snmpd) is significantly improved, which is an SNMP agent reference implementation that
- supports logging.
- supports several SNMP objects.
- uses a pipeline to handle incoming requests.
- handles SNMP v1/v2c requests.
Changes from 3.1:
General
We changed a lot of code, which shows the suite evolution is still fast. (The Library is stable now, but the Browser, Compiler and Agent are moving fast.)
New Core Public Types
Only one new types is introduced in 4.0. That is the SearchResult class. You will use it more and more in the future, as we recommend IObjectTree.Search.
New Assemblies
Only one assembly is added to our binary release package. That is snmpd.exe, our SNMP agent reference design.
New Public Types
We have a few new types here except for SearchResult,
- WatchDog: This is a class that works as a hardware watch dog. The Browser utilizes it to monitor the module folder for changes. Without it, changes occurring in a short period of time cause a sequence of UI updates. It can be extended to provide more functionality. (Note that this class is released under MIT license and distributed in a standalone source file.)
- AccessFailureException: This is an exception type used snmpd for read-only or write-only SNMP objects.
New Public Namespaces
Two namespaces are added,
- Lextm.Common: This namespace currently only contains WatchDog class.
- Lextm.SharpSnmpLib.Agent: This namespace contains all agent side relevant classes, such as SnmpApplication, SnmpContext and so on.