tailcfg: add Hostinfo.ExitNodeID to report the selected exit node (#16625)

When a client selects a particular exit node, Control may use that as
a signal for deciding other routes.

This patch causes the client to report whenever the current exit node
changes, through tailcfg.Hostinfo.ExitNodeID. It relies on a properly
set ipn.Prefs.ExitNodeID, which should already be resolved by
`tailscale set`.

Updates tailscale/corp#30536

Signed-off-by: Simon Law <sfllaw@tailscale.com>
This commit is contained in:
Simon Law
2025-07-22 13:54:28 -07:00
committed by GitHub
parent 19faaff95c
commit 729d6532ff
6 changed files with 83 additions and 16 deletions

View File

@@ -67,6 +67,7 @@ func TestHostinfoEqual(t *testing.T) {
"UserspaceRouter",
"AppConnector",
"ServicesHash",
"ExitNodeID",
"Location",
"TPM",
"StateEncrypted",
@@ -273,6 +274,21 @@ func TestHostinfoEqual(t *testing.T) {
&Hostinfo{IngressEnabled: true},
false,
},
{
&Hostinfo{ExitNodeID: "stable-exit"},
&Hostinfo{ExitNodeID: "stable-exit"},
true,
},
{
&Hostinfo{ExitNodeID: ""},
&Hostinfo{},
true,
},
{
&Hostinfo{ExitNodeID: ""},
&Hostinfo{ExitNodeID: "stable-exit"},
false,
},
}
for i, tt := range tests {
got := tt.a.Equal(tt.b)