Simulator now depends on the latest pysnmp features introduced in
pysnmp version 4.3.0

Introducing initial MIB compiler (PySMI) integration. Most command-line
tools can now be given MIB symbols rather than OIDs. Requested
MIBs will be automatically downloaded from http://mibs.snmplabs.com/ .

Full-line comments (#-based) and empty lines are now allowed in data files.

When recording .snmprec data, hex everything if a non-alpha/numeric
literal is present in a value. This eliminates possible issues with
unescaped contents in a SQL-based recorder.

New –max-varbinds option can now be used for limiting the number
of variable bindings in SNMP response message on a per-engine-id
basis. Global default is now 64 variable bindings.

Multiple SNMP ContextEngineID can now be configured per each of possibly
many SNMP Engine IDs.

SNMP configuration logging reworked for better clarity.

The notification module now binds to the same local interface through
which Simulator received CommandRequest triggering notification.
Also it supports ‘bindaddr’ option to override the above behaviour on
a per-OID basis.

The sql variation module tweaked to be better compliant with
Python DB API 2.0 so that it can now work with MySQL out of
the box. Module options also reworked to support named
DB connect() parameters.

Simulator can now run many independent SNMP engines each with its
own set of data files listening at dedicated transport endpoints.
At least pysnmp 4.2.5 is required for this feature to work.

Simulator now accepts the –transport-id-offset command-line parameter
to specify the initial transport ID instance for each transport domain
configured.

Variation module API changed to allow recording module to communicate
to its host time of the next probe to occur.

Variation module API changed so that SNMP engine ID is only available
in variate() context. This is due to the new multi-engine ID design.

New –args-from-file command-line parameter added to snmpsimd.py to
allow a large number of SNMP engines configured to Simulator. The
–agent-endpoint*-list= family of options discontinued in favor of
multiple –agent-*-endpoint options read from args file.

Distribute is gone, switching to setuptools completely.

Default logging destination for all tools is now stderr.

The –version option of snmprec.py renamed into –protocol-version.

New command-line option –pid-file added.

Daemonization under a non-root user now works.

Fixes to time-based log file rotation implementation.

Fixes to numeric variation module. Also, taglist parameter is now
defaulted into all numerical types.

Variation modules can now participate in .snmprec production what
can be used for capturing additional information about SNMP Agent
being snapshotted in .snmprec files.
The following changes have been made to the system:

the snmprec.py tool can be passed variation module name.

variation modules can now define the ‘record’ callable which
will be given a chance to influence snmprec record being written.

variation modules running in recording mode can communicate to
the upper levels that they either won’t produce any data on the
current invocation or request another round of SNMP Agent walk.

Variation modules options now take shape of a key-value pairs. This
might break backward compatibility with 0.2.0!

The counter.py and gauge.py variation modules merged into a single
numeric.py module which also supports INTEGER&TIMETICKS values as
well as recording feature.

The involatilecache.py and volatilecache.py modules merged into a
single writecache.py module which also supports SET value verification
against per-OID access list.

The error.py variation module extended to support variation based on
SET value.

The delay.py variation module extended to support variation based on
SET value and time of date.

Format of the OID stored in SQL database changed in a backward incompatible
manner.

Recording functionality added to the delay.py and numeric.py modules.

The new “multiplex” variation module added to be able to record
and replay a sequence of .snmprec files ordered by time.

SNMP GETBULK operation is now supported by snmprec.py.

Redesign of grammar objects – the new concept is that they
are only responsible for basic record layout, fields normalization.
and SNMP types resolution. However complex field formatting (such
as grammar-specific tag modifiers) is now up to higher-level
‘Record’ objects.

Simulator-generated community names now uses ‘/’ as path separator
regardless of the platform. This allows for unified Simulator view
in terms of community and context names across the platforms.

Snapshot files recording now works under Python3.

Install data and variation modules into package root to make easy_install
work again. Search these directories at runtime as a last resort - prefer
system or home locations as it is more natural to keep changing data there.