towerops/lib/towerops/snmp
Graham McIntire 3606ba19b3 feat: ePMP firmware extraction + ePMP3000 NetSNMP-quirk detection
ePMP devices were not reporting firmware_version because the YAML's
cambiumCurrentuImageVersion.0 OID returns empty on ePMP3000 firmware.
Add detect_version/1 to the Epmp vendor module with two-OID fallback:
cambiumCurrentSWInfo.0 (verbose, ePMP3000-friendly) → cambiumCurrentuImageVersion.0
(short, ePMP1000/2000), with a regex to extract the version triplet
from whatever the device returns.

ePMP3000 also has a sysObjectID quirk where some firmware reports the
generic NetSNMP-on-Linux ID (.1.3.6.1.4.1.8072.3.2.10) instead of the
Cambium enterprise OID, causing devices to misclassify as the linux
profile. Add a second discovery block to the epmp profile that matches
NetSNMP-OID + PREEMPT_RT armv7l kernel signature + a confirming snmpget
against the Cambium ePMP MIB tree, so detection runs in pass-2
(conditional non-generic) before linux falls through in pass-3.
2026-05-09 08:34:23 -05:00
..
adapters dialyzer: fix remaining 88 warnings — clean dialyzer run 2026-04-21 10:32:42 -05:00
profiles feat: ePMP firmware extraction + ePMP3000 NetSNMP-quirk detection 2026-05-09 08:34:23 -05:00
wireless_client_discovery tests: raise coverage to 70% via helper promotion + new unit/property tests 2026-04-24 09:49:06 -05:00
adapter.ex enable agent debugging 2026-01-27 13:25:04 -06:00
agent_discovery.ex nif ci fix complie in ci 2026-01-30 13:01:44 -06:00
arp_discovery.ex refactor/dry-improvements (#202) 2026-03-28 10:56:34 -05:00
arp_entries.ex refactor(snmp): extract remaining sub-domains (wireless, entity, transceivers, printer, ARP, MAC, discovered devices, topology) 2026-04-30 14:26:30 -05:00
arp_entry.ex arp 2026-01-23 08:40:57 -06:00
client.ex refactor: address audit recommendations from results.md 2026-04-30 12:33:41 -05:00
deferred_discovery.ex dialyzer: fix remaining 88 warnings — clean dialyzer run 2026-04-21 10:32:42 -05:00
device.ex feature/entity-physical-inventory (#187) 2026-03-27 10:48:50 -05:00
discovered_devices.ex refactor(snmp): extract remaining sub-domains (wireless, entity, transceivers, printer, ARP, MAC, discovered devices, topology) 2026-04-30 14:26:30 -05:00
discovery.ex dialyzer: replace suppressions with real fixes where possible 2026-04-21 11:01:30 -05:00
entity_physical.ex feature/entity-physical-inventory (#187) 2026-03-27 10:48:50 -05:00
entity_physical_reading.ex feature/entity-physical-inventory (#187) 2026-03-27 10:48:50 -05:00
entity_physicals.ex refactor(snmp): extract remaining sub-domains (wireless, entity, transceivers, printer, ARP, MAC, discovered devices, topology) 2026-04-30 14:26:30 -05:00
interface.ex feat: add backhaul capacity analysis foundation 2026-03-06 17:54:32 -06:00
interface_stat.ex fix: improve bandwidth counter handling to match LibreNMS approach (#168) 2026-03-25 13:33:45 -05:00
interfaces.ex refactor(snmp): extract metadata submodules (vlans, ips, processors, storage, mempools, sensors, interfaces, neighbors) 2026-04-30 14:26:30 -05:00
ip_address.ex feat: add IP address discovery (Phase 1.3) 2026-01-21 10:36:19 -06:00
ip_addresses.ex refactor(snmp): extract metadata submodules (vlans, ips, processors, storage, mempools, sensors, interfaces, neighbors) 2026-04-30 14:26:30 -05:00
mac_address.ex mac discovery 2026-01-23 09:22:08 -06:00
mac_addresses.ex refactor(snmp): extract remaining sub-domains (wireless, entity, transceivers, printer, ARP, MAC, discovered devices, topology) 2026-04-30 14:26:30 -05:00
mac_discovery.ex refactor/dry-improvements (#202) 2026-03-28 10:56:34 -05:00
memory_pool.ex feat: add memory pool and storage discovery (Phase 1.5) 2026-01-21 10:57:08 -06:00
mempool.ex feat: implement mempools (memory pools) feature for SNMP monitoring (#184) 2026-03-26 17:07:43 -05:00
mempool_reading.ex feat: implement mempools (memory pools) feature for SNMP monitoring (#184) 2026-03-26 17:07:43 -05:00
mempools.ex refactor(snmp): extract metadata submodules (vlans, ips, processors, storage, mempools, sensors, interfaces, neighbors) 2026-04-30 14:26:30 -05:00
mib_parser.ex refactor: convert 6 Gleam modules to idiomatic Elixir with TDD (#196) 2026-03-28 09:52:07 -05:00
mib_translator.ex dialyzer: replace suppressions with real fixes where possible 2026-04-21 11:01:30 -05:00
monitoring.ex refactor: address audit recommendations from results.md 2026-04-30 12:33:41 -05:00
neighbor.ex moduledocs 2026-01-17 15:08:49 -06:00
neighbor_cleanup_worker.ex feat: add automatic network topology inference 2026-02-12 13:28:01 -06:00
neighbor_discovery.ex refactor/dry-improvements (#202) 2026-03-28 10:56:34 -05:00
neighbors.ex refactor(snmp): extract metadata submodules (vlans, ips, processors, storage, mempools, sensors, interfaces, neighbors) 2026-04-30 14:26:30 -05:00
physical_entity.ex feat: add physical inventory discovery (Phase 1.4) 2026-01-21 10:46:27 -06:00
poller.ex snmp overhaul 2026-01-18 16:00:01 -06:00
poller_behaviour.ex snmp bits 2026-01-03 14:41:28 -06:00
printer_supplies.ex refactor(snmp): extract remaining sub-domains (wireless, entity, transceivers, printer, ARP, MAC, discovered devices, topology) 2026-04-30 14:26:30 -05:00
printer_supply.ex feature/entity-physical-inventory (#187) 2026-03-27 10:48:50 -05:00
processor.ex sanitize snmp data and fix some cpu things 2026-01-22 16:53:01 -06:00
processor_reading.ex sanitize snmp data and fix some cpu things 2026-01-22 16:53:01 -06:00
processors.ex refactor(snmp): extract metadata submodules (vlans, ips, processors, storage, mempools, sensors, interfaces, neighbors) 2026-04-30 14:26:30 -05:00
queries.ex refactor: address audit recommendations from results.md 2026-04-30 12:33:41 -05:00
sanitizer.ex refactor: convert 6 Gleam modules to idiomatic Elixir with TDD (#196) 2026-03-28 09:52:07 -05:00
sensor.ex moduledocs 2026-01-17 15:08:49 -06:00
sensor_change_detector.ex dialyzer: fix all unmatched_return warnings (154 → 0) 2026-04-21 10:03:55 -05:00
sensor_reading.ex fix: add validation for state_descr in sensor readings 2026-03-05 09:27:07 -06:00
sensors.ex refactor(snmp): extract metadata submodules (vlans, ips, processors, storage, mempools, sensors, interfaces, neighbors) 2026-04-30 14:26:30 -05:00
snmp_behaviour.ex feat: implement batched SNMP GET for multi-OID requests (#183) 2026-03-26 16:37:34 -05:00
state_sensor.ex add state sensor schema, migration, and discovery 2026-01-21 10:25:01 -06:00
storage.ex feat: add memory pool and storage discovery (Phase 1.5) 2026-01-21 10:57:08 -06:00
storage_queries.ex refactor(snmp): extract metadata submodules (vlans, ips, processors, storage, mempools, sensors, interfaces, neighbors) 2026-04-30 14:26:30 -05:00
storage_reading.ex fix mikrotik sensors 2026-01-22 18:07:20 -06:00
topology.ex refactor(snmp): extract remaining sub-domains (wireless, entity, transceivers, printer, ARP, MAC, discovered devices, topology) 2026-04-30 14:26:30 -05:00
transceiver.ex feature/entity-physical-inventory (#187) 2026-03-27 10:48:50 -05:00
transceiver_reading.ex feature/entity-physical-inventory (#187) 2026-03-27 10:48:50 -05:00
transceivers.ex refactor(snmp): extract remaining sub-domains (wireless, entity, transceivers, printer, ARP, MAC, discovered devices, topology) 2026-04-30 14:26:30 -05:00
vlan.ex add VLAN schema, migration, and discovery 2026-01-21 10:31:21 -06:00
vlans.ex refactor(snmp): extract metadata submodules (vlans, ips, processors, storage, mempools, sensors, interfaces, neighbors) 2026-04-30 14:26:30 -05:00
wireless_client.ex dialyzer: fix unknown_type warnings (60 → 0) 2026-04-21 09:43:37 -05:00
wireless_client_discovery.ex refactor: adopt Towerops.Result helpers in 8 call sites 2026-04-30 14:43:24 -05:00
wireless_client_reading.ex feat: add historical wireless client tracking with TimescaleDB 2026-03-09 17:42:17 -05:00
wireless_clients.ex refactor(snmp): extract remaining sub-domains (wireless, entity, transceivers, printer, ARP, MAC, discovered devices, topology) 2026-04-30 14:26:30 -05:00