feature, ipn/ipnlocal: add, use feature.CanSystemdStatus for more DCE

When systemd notification support was omitted from the build, or on
non-Linux systems, we were unnecessarily emitting code and generating
garbage stringifying addresses upon transition to the Running state.

Updates #12614

Change-Id: If713f47351c7922bb70e9da85bf92725b25954b9
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
pull/17813/head
Brad Fitzpatrick 4 weeks ago committed by Brad Fitzpatrick
parent e059382174
commit e0e8731130

@ -23,10 +23,17 @@ var HookSystemdStatus Hook[func(format string, args ...any)]
// It does nothing on non-Linux systems or if the binary was built without // It does nothing on non-Linux systems or if the binary was built without
// the sdnotify feature. // the sdnotify feature.
func SystemdStatus(format string, args ...any) { func SystemdStatus(format string, args ...any) {
if runtime.GOOS != "linux" || !buildfeatures.HasSDNotify { if !CanSystemdStatus { // mid-stack inlining DCE
return return
} }
if f, ok := HookSystemdStatus.GetOk(); ok { if f, ok := HookSystemdStatus.GetOk(); ok {
f(format, args...) f(format, args...)
} }
} }
// CanSystemdStatus reports whether the current build has systemd notifications
// linked in.
//
// It's effectively the same as HookSystemdStatus.IsSet(), but a constant for
// dead code elimination reasons.
const CanSystemdStatus = runtime.GOOS == "linux" && buildfeatures.HasSDNotify

@ -5629,12 +5629,14 @@ func (b *LocalBackend) enterStateLockedOnEntry(newState ipn.State, unlock unlock
// Needed so that UpdateEndpoints can run // Needed so that UpdateEndpoints can run
b.e.RequestStatus() b.e.RequestStatus()
case ipn.Running: case ipn.Running:
if feature.CanSystemdStatus {
var addrStrs []string var addrStrs []string
addrs := netMap.GetAddresses() addrs := netMap.GetAddresses()
for _, p := range addrs.All() { for _, p := range addrs.All() {
addrStrs = append(addrStrs, p.Addr().String()) addrStrs = append(addrStrs, p.Addr().String())
} }
feature.SystemdStatus("Connected; %s; %s", activeLogin, strings.Join(addrStrs, " ")) feature.SystemdStatus("Connected; %s; %s", activeLogin, strings.Join(addrStrs, " "))
}
default: default:
b.logf("[unexpected] unknown newState %#v", newState) b.logf("[unexpected] unknown newState %#v", newState)
} }

Loading…
Cancel
Save