I made one more pure Go SNMP v2c and v3 library, but smaller than gosnmp and based on a slightly modified ASN.1 parser from Go stdlib. The stdlib ASN.1 parser is pure DER but we need BER for unmarshaling.
My library has major differences with gosnmp:
PowerSNMPv3 supports get/set with single and multiple data and can return partial errors. In gosnmp, if you try to set a few OIDs but one of them fails, you cannot get detailed information, you must check it separately. In my library:
GET multiple OIDs: if one fails, you get all OK OIDs in result + partial error with failed OID and information about reason of failure
SET multiple OIDs: if one fails, you get total error because SET is atomic
You can use the parse error function for detailed information.Walk is implemented as synchronous and asynchronous with channel and context support.
Supported: AES 128-256, SHA, SHA-2, and two key extension methods.
Tested on real hardware: Cisco/Huawei/Moxa/Eltex
For example: don't use Bulk operation with Moxa
Use Bulk operation with Eltex but increase timeouts and reduce repetition parameter to 8
GitHub: https://github.com/OlegPowerC/powersnmpv3