@@ -137,16 +137,16 @@ func NewConn(options *Options) (conn *Conn, err error) {
137
137
}
138
138
139
139
var (
140
- logger = newMultiLogger (options .Logger )
141
- telemetryLogSink * TelemetryStore
140
+ logger = newMultiLogger (options .Logger )
141
+ telemetryStore * TelemetryStore
142
142
)
143
143
if options .TelemetrySink != nil {
144
144
var err error
145
- telemetryLogSink , err = newTelemetryStore ()
145
+ telemetryStore , err = newTelemetryStore ()
146
146
if err != nil {
147
147
return nil , xerrors .Errorf ("create telemetry log sink: %w" , err )
148
148
}
149
- logger = logger .appendLogger (slog .Make (telemetryLogSink ).Leveled (slog .LevelDebug ))
149
+ logger = logger .appendLogger (slog .Make (telemetryStore ).Leveled (slog .LevelDebug ))
150
150
}
151
151
152
152
nodePrivateKey := key .NewNode ()
@@ -270,9 +270,13 @@ func NewConn(options *Options) (conn *Conn, err error) {
270
270
wireguardEngine .SetStatusCallback (nodeUp .setStatus )
271
271
wireguardEngine .SetNetInfoCallback (nodeUp .setNetInfo )
272
272
magicConn .SetDERPForcedWebsocketCallback (nodeUp .setDERPForcedWebsocket )
273
+ if options .TelemetrySink != nil {
274
+ magicConn .SetNetInfoCallback (telemetryStore .setNetInfo )
275
+ }
273
276
274
277
server := & Conn {
275
278
id : uuid .New (),
279
+ nodeID : nodeID ,
276
280
closed : make (chan struct {}),
277
281
logger : logger ,
278
282
magicConn : magicConn ,
@@ -288,7 +292,7 @@ func NewConn(options *Options) (conn *Conn, err error) {
288
292
configMaps : cfgMaps ,
289
293
nodeUpdater : nodeUp ,
290
294
telemetrySink : options .TelemetrySink ,
291
- telemetryLogs : telemetryLogSink ,
295
+ telemeteryStore : telemetryStore ,
292
296
}
293
297
defer func () {
294
298
if err != nil {
@@ -334,6 +338,7 @@ func IPFromUUID(uid uuid.UUID) netip.Addr {
334
338
type Conn struct {
335
339
// ID must be unique to this connection
336
340
id uuid.UUID
341
+ nodeID tailcfg.NodeID
337
342
mutex sync.Mutex
338
343
closed chan struct {}
339
344
logger multiLogger
@@ -351,9 +356,9 @@ type Conn struct {
351
356
clientType proto.TelemetryEvent_ClientType
352
357
353
358
telemetrySink TelemetrySink
354
- // telemetryLogs will be nil if telemetrySink is nil.
355
- telemetryLogs * TelemetryStore
356
- telemetryWg sync.WaitGroup
359
+ // telemeteryStore will be nil if telemetrySink is nil.
360
+ telemeteryStore * TelemetryStore
361
+ telemetryWg sync.WaitGroup
357
362
358
363
trafficStats * connstats.Statistics
359
364
}
@@ -388,8 +393,8 @@ func (c *Conn) SetNodeCallback(callback func(node *Node)) {
388
393
389
394
// SetDERPMap updates the DERPMap of a connection.
390
395
func (c * Conn ) SetDERPMap (derpMap * tailcfg.DERPMap ) {
391
- if c .configMaps .setDERPMap (derpMap ) && c .telemetryLogs != nil {
392
- c .telemetryLogs .updateDerpMap (derpMap )
396
+ if c .configMaps .setDERPMap (derpMap ) && c .telemeteryStore != nil {
397
+ c .telemeteryStore .updateDerpMap (derpMap )
393
398
}
394
399
}
395
400
@@ -729,27 +734,24 @@ func (c *Conn) newTelemetryEvent() (*proto.TelemetryEvent, error) {
729
734
if err != nil {
730
735
return nil , xerrors .Errorf ("marshal uuid to bytes: %w" , err )
731
736
}
732
- c .nodeUpdater .L .Lock ()
733
- node := c .nodeUpdater .nodeLocked ()
734
- c .nodeUpdater .L .Unlock ()
735
737
736
- logs , ips , dm := c .telemetryLogs .getStore ()
738
+ logs , ips , dm , ni := c .telemeteryStore .getStore ()
737
739
return & proto.TelemetryEvent {
738
- Id : id ,
739
- Time : timestamppb .Now (),
740
- ClientType : c .clientType ,
741
- NodeIdSelf : uint64 (node .ID ),
742
- Logs : logs ,
743
- LogIpHashes : ips ,
744
- DerpMap : DERPMapToProto (dm ),
740
+ Id : id ,
741
+ Time : timestamppb .Now (),
742
+ ClientType : c .clientType ,
743
+ NodeIdSelf : uint64 (c .nodeID ),
744
+ Logs : logs ,
745
+ LogIpHashes : ips ,
746
+ DerpMap : DERPMapToProto (dm ),
747
+ LatestNetcheck : NetInfoToProto (ni ),
745
748
746
749
// TODO:
747
750
Application : "" ,
748
751
NodeIdRemote : 0 ,
749
752
P2PEndpoint : & proto.TelemetryEvent_P2PEndpoint {},
750
753
ThroughputMbits : & wrapperspb.FloatValue {},
751
754
HomeDerp : "" ,
752
- LatestNetcheck : & proto.Netcheck {},
753
755
ConnectionAge : & durationpb.Duration {},
754
756
ConnectionSetup : & durationpb.Duration {},
755
757
P2PSetup : & durationpb.Duration {},
0 commit comments