NetmapFromMapResponseForDebug returns a NetworkMap from the given MapResponse. It is intended for debugging only.
(ctx context.Context, pr persist.PersistView, resp *tailcfg.MapResponse)
| 1404 | // NetmapFromMapResponseForDebug returns a NetworkMap from the given MapResponse. |
| 1405 | // It is intended for debugging only. |
| 1406 | func NetmapFromMapResponseForDebug(ctx context.Context, pr persist.PersistView, resp *tailcfg.MapResponse) (*netmap.NetworkMap, error) { |
| 1407 | if resp == nil { |
| 1408 | return nil, errors.New("nil MapResponse") |
| 1409 | } |
| 1410 | if resp.Node == nil { |
| 1411 | return nil, errors.New("MapResponse lacks Node") |
| 1412 | } |
| 1413 | if !pr.Valid() { |
| 1414 | return nil, errors.New("PersistView invalid") |
| 1415 | } |
| 1416 | |
| 1417 | nu := &rememberLastNetmapUpdater{done: make(chan any, 1)} |
| 1418 | sess := newMapSession(pr.PrivateNodeKey(), nu, nil) |
| 1419 | defer sess.Close() |
| 1420 | |
| 1421 | if err := sess.HandleNonKeepAliveMapResponse(ctx, resp); err != nil { |
| 1422 | return nil, fmt.Errorf("HandleNonKeepAliveMapResponse: %w", err) |
| 1423 | } |
| 1424 | |
| 1425 | <-nu.done |
| 1426 | return sess.netmap(), nil |
| 1427 | } |
| 1428 | |
| 1429 | func (c *Direct) handleDebugMessage(ctx context.Context, debug *tailcfg.Debug) error { |
| 1430 | if code := debug.Exit; code != nil { |
searching dependent graphs…