Skip to content

v2.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Sep 00:29
· 3 commits to main since this release

First stable release of the 2.x API. Existing 1.x projects should read the
migration guide before upgrading.

Friendly query API

  • Explain protocol acronyms, networking, and memory terminology in a plain-language
    reference, with beginner guidance directly in the examples.

  • Explain setup, memory limits, and error recovery with editable example capacity
    constants and actionable messages for incomplete tables.

  • Introduce SNMPClient and SNMPDevice with checked IPv4 strings, owned results,
    automatic request IDs, bounded scheduling, batching, retries, and completion status.

  • Add range queries, selected-column tables, and interface traffic reads without
    per-OID callbacks, addressing #28.

  • Support SNMPv1/SNMPv2c GET, GETNEXT, bounded walks and SET, plus SNMPv2c GETBULK.

  • Discover non-contiguous table indices and prefer Counter64 interface counters
    with Counter32 fallback where high-capacity counters are unavailable.

  • Receive SNMPv1/SNMPv2c traps and acknowledge SNMPv2c INFORMs.

  • Add helpers for common MIB values and examples for interface traffic, host
    storage, printer supplies, multiple devices, writes, and notifications.

Breaking changes from 1.x

  • Compile and link src/*.cpp; the library is no longer header-only.
  • Apply configuration macros consistently to the application and library through
    build flags, rather than sketch-local defines.
  • Use named SNMP versions, fixed-width numeric destinations, signed 32-bit
    request IDs, and mandatory capacities for text and OID buffers.
  • Make owning library objects noncopyable and require explicit handling of
    bounded request capacity and cancellation.
  • Remove SNMPGet::setIP() and the library's definition of the transport-owned
    UDP_TX_PACKET_MAX_SIZE macro.
  • Target modern ESP8266/ESP32 platforms; older AVR platforms are not supported.

Robustness and memory

  • Recover from lost or oversized GETBULK replies with GETNEXT after bounded retries;
    reduce timed-out GET batches while leaving SET unsplit and unretried.

  • Allow more logical interfaces in the interface example with a bounded 64-row table.

  • Validate SNMP version/PDU/value combinations across the expanded manager
    operations and enforce the protocol's OID arc-count limit.

  • Bound query, walk, table, packet, and payload storage; release invalidated
    payloads and report allocation failures through checked results.

  • Support compact table-index storage and recover from empty successful GETBULK
    responses using GETNEXT.

Validation and release tooling

  • Cover large sparse NAS storage tables, wide size conversions, invalid allocation
    units, bounded table overflow, and streaming in independent mock-agent regressions.
  • Add modular native regressions, independent mock agents, sparse-table fixtures,
    low-heap failure tests, sanitizer and lifecycle/leak checks.
  • Build examples and library configurations for the supported ESP targets, and
    validate wire interoperability against Net-SNMP.
  • Retain historical D1 Mini read/walk and burst-test evidence; those runs do not
    certify this release on every board or agent.
  • Automate release preparation PRs and checked publication for both major lines.
  • Gate CI and releases with workflow/shell, Python, and Arduino packaging lint checks.

Current limitations

  • SNMPv3, DNS resolution, runtime MIB parsing, and sending traps/INFORMs are not
    implemented. This is a bounded SNMPv1/SNMPv2c manager, not full SNMP conformance
    certification.