summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrew Dunham <andrew@du.nham.ca>2023-02-03 16:44:23 -0500
committerAndrew Dunham <andrew@du.nham.ca>2023-02-03 16:44:23 -0500
commit9e61fc7721a90e39f31330523deffecb9b8eb452 (patch)
treead0171bb402151bdbf39384e26d6578a40932154
parent0e1403ec392bdc181a7de3de4f26ccb313e76323 (diff)
downloadtailscale-andrew/hostinfo-HavePortMap.tar.xz
tailscale-andrew/hostinfo-HavePortMap.zip
Signed-off-by: Andrew Dunham <andrew@du.nham.ca> Change-Id: I085e259fc45e7067a5a09a9e842cf66c700f0802
-rw-r--r--tailcfg/tailcfg.go6
-rw-r--r--tailcfg/tailcfg_clone.go2
-rw-r--r--tailcfg/tailcfg_view.go4
-rw-r--r--wgengine/magicsock/magicsock.go6
4 files changed, 9 insertions, 9 deletions
diff --git a/tailcfg/tailcfg.go b/tailcfg/tailcfg.go
index 95dc79404..65a9f12d2 100644
--- a/tailcfg/tailcfg.go
+++ b/tailcfg/tailcfg.go
@@ -593,7 +593,7 @@ type NetInfo struct {
// HavePortMap is whether we have an existing portmap open
// (UPnP, PMP, or PCP).
- HavePortMap bool `json:",omitempty"`
+ HavePortMap opt.Bool
// UPnP is whether UPnP appears present on the LAN.
// Empty means not checked.
@@ -642,11 +642,11 @@ func (ni *NetInfo) String() string {
}
func (ni *NetInfo) portMapSummary() string {
- if !ni.HavePortMap && ni.UPnP == "" && ni.PMP == "" && ni.PCP == "" {
+ if ni.HavePortMap == "" && ni.UPnP == "" && ni.PMP == "" && ni.PCP == "" {
return "?"
}
var prefix string
- if ni.HavePortMap {
+ if v, _ := ni.HavePortMap.Get(); v {
prefix = "active-"
}
return prefix + conciseOptBool(ni.UPnP, "U") + conciseOptBool(ni.PMP, "M") + conciseOptBool(ni.PCP, "C")
diff --git a/tailcfg/tailcfg_clone.go b/tailcfg/tailcfg_clone.go
index b1bef1d68..9bef80dc9 100644
--- a/tailcfg/tailcfg_clone.go
+++ b/tailcfg/tailcfg_clone.go
@@ -177,7 +177,7 @@ var _NetInfoCloneNeedsRegeneration = NetInfo(struct {
OSHasIPv6 opt.Bool
WorkingUDP opt.Bool
WorkingICMPv4 opt.Bool
- HavePortMap bool
+ HavePortMap opt.Bool
UPnP opt.Bool
PMP opt.Bool
PCP opt.Bool
diff --git a/tailcfg/tailcfg_view.go b/tailcfg/tailcfg_view.go
index dfd48f2bc..f2d77dafe 100644
--- a/tailcfg/tailcfg_view.go
+++ b/tailcfg/tailcfg_view.go
@@ -380,7 +380,7 @@ func (v NetInfoView) WorkingIPv6() opt.Bool { return v.ж.WorkingIPv6
func (v NetInfoView) OSHasIPv6() opt.Bool { return v.ж.OSHasIPv6 }
func (v NetInfoView) WorkingUDP() opt.Bool { return v.ж.WorkingUDP }
func (v NetInfoView) WorkingICMPv4() opt.Bool { return v.ж.WorkingICMPv4 }
-func (v NetInfoView) HavePortMap() bool { return v.ж.HavePortMap }
+func (v NetInfoView) HavePortMap() opt.Bool { return v.ж.HavePortMap }
func (v NetInfoView) UPnP() opt.Bool { return v.ж.UPnP }
func (v NetInfoView) PMP() opt.Bool { return v.ж.PMP }
func (v NetInfoView) PCP() opt.Bool { return v.ж.PCP }
@@ -398,7 +398,7 @@ var _NetInfoViewNeedsRegeneration = NetInfo(struct {
OSHasIPv6 opt.Bool
WorkingUDP opt.Bool
WorkingICMPv4 opt.Bool
- HavePortMap bool
+ HavePortMap opt.Bool
UPnP opt.Bool
PMP opt.Bool
PCP opt.Bool
diff --git a/wgengine/magicsock/magicsock.go b/wgengine/magicsock/magicsock.go
index 4f2ec7825..46ee89263 100644
--- a/wgengine/magicsock/magicsock.go
+++ b/wgengine/magicsock/magicsock.go
@@ -793,12 +793,12 @@ func (c *Conn) setNetInfoHavePortMap() {
// No NetInfo yet. Nothing to update.
return
}
- if c.netInfoLast.HavePortMap {
+ if v, _ := c.netInfoLast.HavePortMap.Get(); v {
// No change.
return
}
ni := c.netInfoLast.Clone()
- ni.HavePortMap = true
+ ni.HavePortMap.Set(true)
c.callNetInfoCallbackLocked(ni)
}
@@ -834,8 +834,8 @@ func (c *Conn) updateNetInfo(ctx context.Context) (*netcheck.Report, error) {
UPnP: report.UPnP,
PMP: report.PMP,
PCP: report.PCP,
- HavePortMap: c.portMapper.HaveMapping(),
}
+ ni.HavePortMap.Set(c.portMapper.HaveMapping())
for rid, d := range report.RegionV4Latency {
ni.DERPLatency[fmt.Sprintf("%d-v4", rid)] = d.Seconds()
}