Commit Graph

54 Commits

Author SHA1 Message Date
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
bb22e16460 Add structured node config with names/macs/ips and avoid flag
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 09:52:51 -08:00
Ian Gulliver
b966ad0feb Refactor Dante fields to use proper types and group flows with lastSeen
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 23:15:24 -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
ed9a0cd60d Fix interface merging, error ordering, sACN client, and add charset headers
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 22:57:13 -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
fc5b36cd1c Remove separate tracking structures and store protocol data directly on nodes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 22:15:54 -08:00
Ian Gulliver
7aac3c0559 Track sACN emitters and receivers with peer linking
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 21:27:35 -08:00
Ian Gulliver
85cfa6a9f4 Revert "Add missing node tracking for config-defined nodes"
This reverts commit 9ec193ef1d.
2026-01-28 08:42:12 -08:00
Ian Gulliver
9ec193ef1d Add missing node tracking for config-defined nodes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 08:38:58 -08:00
Ian Gulliver
04e22b03cb Track node reachability across all IPs, increase ping interval
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 21:03:15 -08:00
Ian Gulliver
c8be46b739 Add per-node ping monitoring with unreachable error tracking
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 18:56:12 -08:00
Ian Gulliver
a94f816f3d Add SSE endpoint for real-time status updates
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 18:49:39 -08:00
Ian Gulliver
4c149ecdf7 Fix IP deduplication and filter link interfaces in JSON 2026-01-25 09:53:31 -08:00
Ian Gulliver
4123b49a98 Add broadcast pinging and fix node merging by shared IP 2026-01-24 20:02:43 -08:00
Ian Gulliver
9aebe8b83d Add HTTP API with JSON status endpoint and typeid support 2026-01-24 11:03:34 -08:00
Ian Gulliver
894e355f56 split nodes.go into focused files and refactor Update function
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:31:57 -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
111cb51fdb update node references in flows and memberships when nodes are merged
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:24:18 -08:00
Ian Gulliver
a374b34b18 improve link display formatting and sorting
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:15:18 -08:00
Ian Gulliver
0e8dfc46b1 refactor dante flows and artnet to use node references instead of names
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:09:44 -08:00
Ian Gulliver
3222e20e84 track multiple names per node 2026-01-23 13:11:38 -08:00
Ian Gulliver
9c7bd671ba add multicast flow transmitter discovery via mdns _netaudio-chan service
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 11:53:30 -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
a157a2a5e4 add well-known multicast address names for shure, ssdp, slp, ptp
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 09:52:18 -08:00
Ian Gulliver
c7db24b1fd add shure slp discovery and comma-separate group member lists
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 09:47:51 -08:00
Ian Gulliver
c2318279bf add names for well-known multicast addresses and cap sacn universes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 07:02:47 -08:00
Ian Gulliver
a0e8b4cec5 fix mdns to use A record IPs and create interfaces for IP-only nodes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 00:32:07 -08:00
Ian Gulliver
2fa2fcd57d add dante device discovery via mdns and ptp clock master detection
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 00:24:36 -08:00
Ian Gulliver
536c2d3dc9 add mdns hostname discovery and artnet universe tracking
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 23:59:32 -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
395180493a add link detection via mac table path following
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 23:29:22 -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
2262e8d3bf merge nodes when update discovers mac belongs to different node
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 14:47:46 -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
6d50ee30aa deduplicate interfaces by mac during update and merge
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 14:12:14 -08:00
Ian Gulliver
5e1ba33cb4 use natural sort order for interface names
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 14:05:33 -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
37b30fe788 add --log-nodes flag for comprehensive node logging
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 08:37:13 -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
e3bed567ab rename log-reasons to log-events with structured prefixes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 08:17:45 -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
3c8afa9bdf add flags for disabling discovery and controlling logging 2026-01-17 21:02:30 -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
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