MODIFICATIONS MADE BY CAMBIUM NETWORKS
======================================

Component : python-netsnmpagent
Upstream  : https://github.com/pief/python-netsnmpagent
Baseline  : upstream release 0.6.0
Licence   : GNU Lesser General Public License, version 3 (LGPL-3.0)
            See COPYING.LESSER and COPYING.GPL-3.0 in this directory.
Product   : cnMaestro On-Premises 6.0.0-r6 (cnmaestro-server 6.0.0-r6-noc-68)
Modified by: Cambium Networks, Ltd.

This directory contains the complete corresponding source of the version of
python-netsnmpagent distributed in cnMaestro On-Premises 6.0.0-r6, including the
modifications made by Cambium Networks. The modifications are stated below, as
required by LGPL-3.0 section 2 and GNU GPL-3.0 section 5(a).

SUMMARY OF CHANGES AGAINST UPSTREAM 0.6.0
-----------------------------------------

1. netsnmpapi.py            104 lines added, 0 lines removed
   (upstream 417 lines -> 529 lines)

   Adds ctypes declarations for the parts of the Net-SNMP C API that upstream
   0.6.0 does not expose, namely trap transmission:

     - send_easy_trap, send_v2trap, send_v3trap
       (from Net-SNMP include/net-snmp/agent/agent_trap.h)
     - the netsnmp_pdu structure definition and its pointer type
       (from Net-SNMP include/net-snmp/types.h)
     - ASN_CONSTRUCTOR and ASN_CONTEXT constants, and the derived
       SNMP_MSG_TRAP and SNMP_MSG_TRAP2 message-type values
       (from Net-SNMP include/net-snmp/snmp.h)
     - snmp_pdu_create, snmp_free_pdu and snmp_add_var
       (from Net-SNMP include/net-snmp/pdu_api.h)

   Each added declaration mirrors the corresponding declaration in the
   Net-SNMP headers, which the added code cites by filename in comments.

2. netsnmpagent.py          204 lines added, 16 lines removed
   (upstream 982 lines -> 1173 lines; approximately 220 lines changed)

     - adds a trap-sending capability built on the bindings added in (1)
     - refactors the existing OID registration helper into a reusable
       OID preparation helper
     - trims trailing zeroes from OID arrays
     - converts the module to relative imports

3. netsnmptestenv.py        1 line changed
     - interpreter shebang updated from "#!/usr/bin/env python"
       to "#!/usr/bin/env python3"

   This file is an upstream test-environment helper. It is not imported or
   executed by cnMaestro.

4. __init__.py              added (empty)
     - makes the directory an importable Python package in its vendored
       location. Contains no code.

No other files are changed. No upstream file is removed. No licence notice or
copyright notice has been altered or removed.

HOW TO SUBSTITUTE A MODIFIED VERSION
------------------------------------

These files are plain Python source. They are not compiled, byte-code only,
frozen or statically linked, and they are not bundled inside any Cambium
executable. On a cnMaestro On-Premises appliance they are installed at:

    /opt/cnmaestro-server/scripts/snmp/agentx/

They are loaded by the standard CPython import mechanism at run time, and the
library reaches the Net-SNMP C library through ctypes, which is a run-time
dynamic load rather than a compile-time link. There is therefore no relinking
step. To run a modified version of the library, replace the files at the path
above and restart the SNMP sub-agent process. The appliance provides an
ordinary interactive shell with administrative privileges.

Note that the trap-sending entry point described in (1) and (2) above does not
exist in unmodified upstream 0.6.0. A replacement library that does not provide
it will load, but cnMaestro's SNMP trap feature will not operate.
