37 Commits

Author SHA1 Message Date
Ian Gulliver
dd360b8e28 Apply go fix modernizations 2026-03-05 11:39:36 -08:00
Ian Gulliver
92ab5d8a6e Add TP-Link AP support with wireless client sub-locations
- Add NodeType enum (switch, ap, wireless_client, wired_client)
- Poll SNMPv2c and SNMPv3 in parallel to win race with ping
- Render APs with bordered sub-locations containing wireless clients
- Fall back to parent interface stats when child lacks them
- Log when unreachable nodes become reachable via merge

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 20:33:42 -08:00
Ian Gulliver
d4e7a8a9b7 Move interface counter state from global map to Interface struct 2026-02-02 10:16:37 -08:00
Ian Gulliver
451196f162 Filter out insane utilization from counter resets and log new utilization errors
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 17:05:06 -08:00
Ian Gulliver
32da723b2c Clear MAC table on each SNMP poll and reduce ping threshold
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 13:20:20 -08:00
Ian Gulliver
5a7596b456 Add port flap and port down error tracking with faster ping
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 13:01:07 -08:00
Ian Gulliver
d1b4de01e8 Add shared_names config and port uptime tracking
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 12:06:59 -08:00
Ian Gulliver
5c4266f89c Include multicast and broadcast packets in interface pps stats
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 07:35:49 -08:00
Ian Gulliver
99083ecde5 Refactor error tracking to be edge-triggered with node setters
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 23:06:26 -08:00
Ian Gulliver
a912d73169 Refactor node storage and use proper types for protocol data
- Rename TypeID to ID throughout
- Remove re-derivable data (MACTableSize, SACNInputs now derived)
- Use typed ArtNetUniverse and SACNUniverse with methods
- Store multicast groups with lastSeen tracking in structs
- Remove int indexes in Nodes, use direct node pointers
- Parse multicast groups into typed struct instead of strings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 22:36:44 -08:00
Ian Gulliver
2af5ad51d7 Add link speed and utilization tracking to interface stats
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 12:16:44 -08:00
Ian Gulliver
7c978d28ac Add per-interface packet and byte rate statistics
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 11:16:32 -08:00
Ian Gulliver
a96eb7db8c Add port error tracking with UI display
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 18:43:23 -08:00
Ian Gulliver
cc3d84b97e Query DHCP binding table from Netgear switches via SNMP
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 23:11:55 -08:00
Ian Gulliver
f02b25ca29 fix goroutine leak and reduce code duplication
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:28:58 -08:00
Ian Gulliver
7e8ec697ae refactor codebase and fix bugs
- merge dante.go and dante_control.go into single dante.go
- consolidate buildDantePacket and buildDantePacket28 into one function
- fix broken comparison logic in SetDanteClockMaster
- split ARP parsing into platform-specific files with build tags
- implement Linux ARP table parsing via /proc/net/arp
- run gofmt on all files

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:21:51 -08:00
Ian Gulliver
528f58dca1 add yamaha speaker discovery via tcp:50000 and move pollNode to tendrils.go
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:21:35 -08:00
Ian Gulliver
3222e20e84 track multiple names per node 2026-01-23 13:11:38 -08:00
Ian Gulliver
47b48337b3 add dante subscription discovery via arc protocol
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 11:30:40 -08:00
Ian Gulliver
e73c591e34 add hyperdeck and videohub discovery via tcp probing
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 08:58:41 -08:00
Ian Gulliver
7bced7b350 add igmp querier for multicast group membership tracking
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 23:46:56 -08:00
Ian Gulliver
c3ed8e30e3 refactor to per-node snmp polling and immediate arp dump
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 23:09:54 -08:00
Ian Gulliver
d2a09250d0 add switch-wide poe budget tracking via snmp
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 22:56:47 -08:00
Ian Gulliver
5333d3e11e add interface stats and poe power monitoring via snmp
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 22:47:30 -08:00
Ian Gulliver
54fc941728 add per-node mac table populated from snmp and arp
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 14:54:06 -08:00
Ian Gulliver
9bcda6b96c add target node parameter to Update and SIGUSR1 dump handler
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 14:44:15 -08:00
Ian Gulliver
8cb605b817 merge snmp-discovered interfaces with existing node found by ip
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 14:23:21 -08:00
Ian Gulliver
92299f5efc key interfaces by name when available and normalize port names
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 14:00:51 -08:00
Ian Gulliver
09a99064c3 restructure nodes to have interfaces with name, mac, and ips
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 08:28:57 -08:00
Ian Gulliver
545a448bca remove parentid and tree logging machinery
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 08:15:27 -08:00
Ian Gulliver
b2271d139b discover switch interface macs via snmp ifPhysAddress 2026-01-17 21:21:57 -08:00
Ian Gulliver
e92a09e119 add debug flags for arp, lldp, and snmp discovery 2026-01-17 21:12:21 -08:00
Ian Gulliver
0d36c21db2 add node names from hostname, lldp, and snmp
populate local node name from hostname. extract system name from lldp packets and snmp sysname oid. call logtree after node merges.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 22:27:31 -08:00
Ian Gulliver
ebfe18f84c remove unused snmp queries
remove queryARPTable (returns no data) and switch directly to q-bridge-mib (bridge-mib returns no data).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 22:19:05 -08:00
Ian Gulliver
75bbf4b0a4 fix local address population and snmp reverse port discovery
populate root node with local macs/ips at startup, excluding loopback addresses and permanent arp entries. detect when snmp finds parent node mac in child forwarding table and set child localport.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 22:13:25 -08:00
Ian Gulliver
f4972b2b50 add snmpv3 topology discovery with q-bridge support 2025-11-29 21:56:45 -08:00
Ian Gulliver
c780fba93c add snmpv3 support 2025-11-29 21:16:58 -08:00