Adds observability and fixes cross cases

- strict-kem vs strict-rp said "Connected + Quantum resistance: true" but it is actually blocked
- perm-kem vs perm-rp "Connected + Quantum resistance: true" but it's a classic WG link, without PQ safety
This commit is contained in:
riccardom
2026-08-27 12:16:20 +02:00
parent 9015b68b66
commit 2a9c8dd8ac
9 changed files with 137 additions and 28 deletions

View File

@@ -10,6 +10,7 @@ import (
"google.golang.org/grpc/codes"
gstatus "google.golang.org/grpc/status"
"github.com/netbirdio/netbird/client/internal/pqkem"
"github.com/netbirdio/netbird/client/mdm"
"github.com/netbirdio/netbird/client/proto"
)
@@ -156,6 +157,9 @@ func (s *Server) restartEngineForMDMLocked() error {
s.config = config
s.statusRecorder.UpdateManagementAddress(config.ManagementURL.String())
s.statusRecorder.UpdateRosenpass(config.RosenpassEnabled, config.RosenpassPermissive)
// ML-KEM is env-driven today; mirror the Rosenpass update so the status stays in
// sync after an MDM config apply and the wiring is ready if it becomes a config field.
s.statusRecorder.UpdateMLKEM(pqkem.Enabled(), pqkem.Strict())
ctx, cancel := context.WithCancel(s.rootCtx)
s.actCancel = cancel

View File

@@ -32,6 +32,7 @@ import (
"github.com/netbirdio/netbird/client/internal"
"github.com/netbirdio/netbird/client/internal/peer"
"github.com/netbirdio/netbird/client/internal/pqkem"
"github.com/netbirdio/netbird/client/internal/statemanager"
"github.com/netbirdio/netbird/client/internal/updater"
"github.com/netbirdio/netbird/client/proto"
@@ -254,6 +255,7 @@ func (s *Server) Start() error {
s.statusRecorder.UpdateManagementAddress(config.ManagementURL.String())
s.statusRecorder.UpdateRosenpass(config.RosenpassEnabled, config.RosenpassPermissive)
s.statusRecorder.UpdateMLKEM(pqkem.Enabled(), pqkem.Strict())
if s.sessionWatcher == nil {
s.sessionWatcher = internal.NewSessionWatcher(s.rootCtx, s.statusRecorder)
@@ -1007,6 +1009,7 @@ func (s *Server) Up(callerCtx context.Context, msg *proto.UpRequest) (*proto.UpR
s.statusRecorder.UpdateManagementAddress(s.config.ManagementURL.String())
s.statusRecorder.UpdateRosenpass(s.config.RosenpassEnabled, s.config.RosenpassPermissive)
s.statusRecorder.UpdateMLKEM(pqkem.Enabled(), pqkem.Strict())
s.clientRunning = true
s.clientRunningChan = make(chan struct{})
@@ -1565,6 +1568,7 @@ func (s *Server) buildStatusResponse(ctx context.Context, msg *proto.StatusReque
s.statusRecorder.UpdateManagementAddress(s.config.ManagementURL.String())
s.statusRecorder.UpdateRosenpass(s.config.RosenpassEnabled, s.config.RosenpassPermissive)
s.statusRecorder.UpdateMLKEM(pqkem.Enabled(), pqkem.Strict())
if msg.GetFullPeerStatus {
s.runProbes(ctx, msg.ShouldRunProbes)