diff --git a/internal/packetmuxer/service.go b/internal/packetmuxer/service.go index e0dc74be..36b16b7b 100644 --- a/internal/packetmuxer/service.go +++ b/internal/packetmuxer/service.go @@ -66,6 +66,7 @@ func (s *Service) StartWorkers( muxerToNetwork: *s.MuxerToNetwork, networkToMuxer: s.NetworkToMuxer, sessionManager: sessionManager, + tracer: config.Tracer(), workersManager: workersManager, } workersManager.StartWorker(ws.moveUpWorker) @@ -107,6 +108,9 @@ type workersState struct { // sessionManager manages the OpenVPN session. sessionManager *session.Manager + // tracer is a [model.HandshakeTracer]. + tracer model.HandshakeTracer + // workersManager controls the workers lifecycle. workersManager *workers.Manager } @@ -289,6 +293,12 @@ func (ws *workersState) serializeAndEmit(packet *model.Packet) error { return err } + ws.tracer.OnOutgoingPacket( + packet, + int(ws.sessionManager.NegotiationState()), + ws.hardResetCount, + ) + // emit the packet. Possibly BLOCK writing to the networkio layer. select { case ws.muxerToNetwork <- rawPacket: