From ae625691597787dab7fc6aa04c17ac78fcebc9af Mon Sep 17 00:00:00 2001 From: Alex Chan Date: Tue, 27 Jan 2026 14:25:27 +0000 Subject: [PATCH] hostinfo: retrieve OS version for Macs running the OSS client Updates #18520 Change-Id: If86a1f702c704b003002aa7e2f5a6b1418b469cc Signed-off-by: Alex Chan --- hostinfo/hostinfo_darwin.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/hostinfo/hostinfo_darwin.go b/hostinfo/hostinfo_darwin.go index bce99d700..cd551ca42 100644 --- a/hostinfo/hostinfo_darwin.go +++ b/hostinfo/hostinfo_darwin.go @@ -8,14 +8,31 @@ package hostinfo import ( "os" "path/filepath" + + "golang.org/x/sys/unix" + "tailscale.com/types/ptr" ) func init() { + osVersion = lazyOSVersion.Get packageType = packageTypeDarwin } +var ( + lazyOSVersion = &lazyAtomicValue[string]{f: ptr.To(osVersionDarwin)} +) + func packageTypeDarwin() string { // Using tailscaled or IPNExtension? exe, _ := os.Executable() return filepath.Base(exe) } + +// Returns the marketing version (e.g., "15.0.1" or "26.0.0") +func osVersionDarwin() string { + version, err := unix.Sysctl("kern.osproductversion") + if err != nil { + return "" + } + return version +}