Просмотр исходного кода

tailcfg: add latitude, longitude for node location (#11162)

Updates tailscale/corp#17590

Signed-off-by: Claire Wang <[email protected]>
Claire Wang 2 лет назад
Родитель
Сommit
352c1ac96c
4 измененных файлов с 21 добавлено и 0 удалено
  1. 4 0
      tailcfg/derpmap.go
  2. 5 0
      tailcfg/tailcfg.go
  3. 4 0
      tailcfg/tailcfg_clone.go
  4. 8 0
      tailcfg/tailcfg_view.go

+ 4 - 0
tailcfg/derpmap.go

@@ -92,6 +92,10 @@ type DERPRegion struct {
 	// "San Francisco", "Singapore", "Frankfurt", etc.
 	RegionName string
 
+	// Latitude, Longitude are optional geographical coordinates of the DERP region's city, in degrees.
+	Latitude  float64 `json:",omitempty"`
+	Longitude float64 `json:",omitempty"`
+
 	// Avoid is whether the client should avoid picking this as its home
 	// region. The region should only be used if a peer is there.
 	// Clients already using this region as their home should migrate

+ 5 - 0
tailcfg/tailcfg.go

@@ -680,6 +680,11 @@ type Location struct {
 	// IATA, ICAO or ISO 3166-2 codes are recommended ("YSE")
 	CityCode string `json:",omitempty"`
 
+	// Latitude, Longitude are optional geographical coordinates of the node, in degrees.
+	// No particular accuracy level is promised; the coordinates may simply be the center of the city or country.
+	Latitude  float64 `json:",omitempty"`
+	Longitude float64 `json:",omitempty"`
+
 	// Priority determines the order of use of an exit node when a
 	// location based preference matches more than one exit node,
 	// the node with the highest priority wins. Nodes of equal

+ 4 - 0
tailcfg/tailcfg_clone.go

@@ -405,6 +405,8 @@ var _DERPRegionCloneNeedsRegeneration = DERPRegion(struct {
 	RegionID   int
 	RegionCode string
 	RegionName string
+	Latitude   float64
+	Longitude  float64
 	Avoid      bool
 	Nodes      []*DERPNode
 }{})
@@ -575,6 +577,8 @@ var _LocationCloneNeedsRegeneration = Location(struct {
 	CountryCode string
 	City        string
 	CityCode    string
+	Latitude    float64
+	Longitude   float64
 	Priority    int
 }{})
 

+ 8 - 0
tailcfg/tailcfg_view.go

@@ -918,6 +918,8 @@ func (v *DERPRegionView) UnmarshalJSON(b []byte) error {
 func (v DERPRegionView) RegionID() int      { return v.ж.RegionID }
 func (v DERPRegionView) RegionCode() string { return v.ж.RegionCode }
 func (v DERPRegionView) RegionName() string { return v.ж.RegionName }
+func (v DERPRegionView) Latitude() float64  { return v.ж.Latitude }
+func (v DERPRegionView) Longitude() float64 { return v.ж.Longitude }
 func (v DERPRegionView) Avoid() bool        { return v.ж.Avoid }
 func (v DERPRegionView) Nodes() views.SliceView[*DERPNode, DERPNodeView] {
 	return views.SliceOfViews[*DERPNode, DERPNodeView](v.ж.Nodes)
@@ -928,6 +930,8 @@ var _DERPRegionViewNeedsRegeneration = DERPRegion(struct {
 	RegionID   int
 	RegionCode string
 	RegionName string
+	Latitude   float64
+	Longitude  float64
 	Avoid      bool
 	Nodes      []*DERPNode
 }{})
@@ -1374,6 +1378,8 @@ func (v LocationView) Country() string     { return v.ж.Country }
 func (v LocationView) CountryCode() string { return v.ж.CountryCode }
 func (v LocationView) City() string        { return v.ж.City }
 func (v LocationView) CityCode() string    { return v.ж.CityCode }
+func (v LocationView) Latitude() float64   { return v.ж.Latitude }
+func (v LocationView) Longitude() float64  { return v.ж.Longitude }
 func (v LocationView) Priority() int       { return v.ж.Priority }
 
 // A compilation failure here means this code must be regenerated, with the command at the top of this file.
@@ -1382,6 +1388,8 @@ var _LocationViewNeedsRegeneration = Location(struct {
 	CountryCode string
 	City        string
 	CityCode    string
+	Latitude    float64
+	Longitude   float64
 	Priority    int
 }{})