Commit Graph

74 Commits

Author SHA1 Message Date
Ian Gulliver
fdd60a39e1 Replace mermaid.js with cytoscape.js for network diagram 2026-01-24 14:26:38 -08:00
Ian Gulliver
7c0d4ad05a Fix switch-to-switch link detection for downstream nodes 2026-01-24 11:48:24 -08:00
Ian Gulliver
bf787209a5 Add web UI with mermaid.js network diagram
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 11:22:35 -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
168cdedbcb Add flow status parsing and DOWN indicator for inactive dante flows
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 10:28:10 -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
f4b2351de8 add 0x0006 dante channel type and default 0x3000 subscriptions to audio
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:16:09 -08:00
Ian Gulliver
604123559b remove mdns dante node discovery
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:05:04 -08:00
Ian Gulliver
92040c832b fix 0x141a record parsing and add dante channel type detection
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:01:35 -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
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
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
5c4729333a handle loopback subscriptions where device name is . 2026-01-23 21:51:59 -08:00
Ian Gulliver
694a51eade fix 0x3400 parsing to use offset-based string references 2026-01-23 21:49:12 -08:00
Ian Gulliver
71aa3bfc3e add 0x3400 fallback for dante unicast subscription discovery
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 17:32:29 -08:00
Ian Gulliver
fdb8740a0a add 0x3400 command fallback for dante subscription discovery 2026-01-23 16:35:41 -08:00
Ian Gulliver
c16146f2d8 fix dante flow count and zero-pad rx channel numbers 2026-01-23 16:30:53 -08:00
Ian Gulliver
c694efade5 fix dante discovery bugs: filter .in-addr names, dedupe multicast flows, fix unicast channel numbers 2026-01-23 16:28:41 -08:00
Ian Gulliver
66f98075e4 fix multicast flow tx device identification via igmp correlation
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 16:12:36 -08:00
Ian Gulliver
3222e20e84 track multiple names per node 2026-01-23 13:11:38 -08:00
Ian Gulliver
29a0c80fea remove dante channel extraction from mdns discovery
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 13:00:06 -08:00
Ian Gulliver
84876dd595 improve dante flow display format and remove meaningless multicast channel info
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 12:00:27 -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
6394b55191 send mdns queries from listener socket for multicast responses
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 09:27:45 -08:00
Ian Gulliver
f3b85fc8f2 add skaarhoj device discovery and remove unused dante query
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 09:12:09 -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
26f0aac587 implement full atem handshake to get product names
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 07:20:09 -08:00
Ian Gulliver
c7db6c0c68 add blackmagic atem discovery via udp 9910
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 07:18:14 -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
c12e8c0933 add danteancil mdns service query
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 00:45:09 -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