From c325180a1b75b9e9ab929538ff4f62d9c91cada6 Mon Sep 17 00:00:00 2001 From: jdl Date: Sat, 13 Jun 2026 19:30:03 +0200 Subject: [PATCH] Audit changes. --- peer/app.go | 34 ++++++++++++++++++++++++++++++++++ peer/on_ping.go | 11 +++++++++-- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/peer/app.go b/peer/app.go index d113ffb..6a8c811 100644 --- a/peer/app.go +++ b/peer/app.go @@ -1,9 +1,12 @@ package peer import ( + "fmt" + "log" "net/netip" "os" "os/signal" + "strings" "syscall" "time" @@ -82,6 +85,8 @@ func (a *App) Run() error { signal.Notify(sig, syscall.SIGTERM, syscall.SIGINT) defer signal.Stop(sig) + tickCount := 0 + for { select { case p := <-a.hubAddCh: @@ -94,6 +99,11 @@ func (a *App) Run() error { a.onMulticastDiscovery(e) case <-ticker.C: a.onTick() + tickCount++ + if tickCount%8 == 0 { + a.logNetworkState() + } + case <-sig: return a.onShutdown() } @@ -103,3 +113,27 @@ func (a *App) Run() error { func (a *App) onShutdown() error { return wginterface.Delete(a.dev.Name()) } + +func (a *App) logNetworkState() { + var b strings.Builder + fmt.Fprintf(&b, "Network state (self: %s public=%v):\n", a.vpnIP, a.isPublic) + fmt.Fprintf(&b, " IPv4: %v\n", a.selfV4) + fmt.Fprintf(&b, " IPv6: %v\n", a.selfV6) + + b.WriteString("Peers:\n") + + for _, p := range a.peersByIP { + + switch p.State { + case StateDirect: + fmt.Fprintf(&b, " %24s %s DIRECT @ %s rtt=%s\n", + p.Name, p.VPNIP, p.WGEndpoint(), p.RTT.Round(time.Millisecond)) + case StateProbing: + fmt.Fprintf(&b, " %24s %s PROBING @ %s\n", + p.Name, p.VPNIP, p.PreferredEndpoint()) + case StateRelayed: + fmt.Fprintf(&b, " %24s %s RELAYED\n", p.Name, p.VPNIP) + } + } + log.Print(b.String()) +} diff --git a/peer/on_ping.go b/peer/on_ping.go index 2be8d0a..89f1193 100644 --- a/peer/on_ping.go +++ b/peer/on_ping.go @@ -1,6 +1,7 @@ package peer import ( + "log" "net/netip" "time" @@ -37,9 +38,15 @@ func (a *App) onPing(e PingEvent) { if peer.State == StateDirect { if dst := e.ping.Dst; dst.IsValid() { if dst.Addr().Is4() { - a.selfV4 = dst + if dst != a.selfV4 { + log.Printf("Local IPv4 updated: %s -> %s", a.selfV4, dst) + a.selfV4 = dst + } } else { - a.selfV6 = dst + if dst != a.selfV6 { + log.Printf("Local IPv6 updated: %s -> %s", a.selfV6, dst) + a.selfV6 = dst + } } } return