{"record":{"id":"2ab1b77db321859d","repo":"slackhq/nebula","slug":"localaddr-returned-invalid-ip-address-s","errorCode":null,"errorMessage":"LocalAddr returned invalid IP address: %s","messagePattern":"LocalAddr returned invalid IP address: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"udp/udp_darwin.go","lineNumber":166,"sourceCode":"\twritten := 0\n\tfor i, b := range bufs {\n\t\tif err := u.WriteTo(b, addrs[i]); err == nil {\n\t\t\twritten++\n\t\t} else {\n\t\t\tu.l.Debug(\"failed to write packet in batch\", \"udpAddr\", addrs[i], \"error\", err)\n\t\t}\n\t}\n\treturn written, nil\n}\n\nfunc (u *StdConn) LocalAddr() (netip.AddrPort, error) {\n\ta := u.UDPConn.LocalAddr()\n\n\tswitch v := a.(type) {\n\tcase *net.UDPAddr:\n\t\taddr, ok := netip.AddrFromSlice(v.IP)\n\t\tif !ok {\n\t\t\treturn netip.AddrPort{}, fmt.Errorf(\"LocalAddr returned invalid IP address: %s\", v.IP)\n\t\t}\n\t\treturn netip.AddrPortFrom(addr, uint16(v.Port)), nil\n\n\tdefault:\n\t\treturn netip.AddrPort{}, fmt.Errorf(\"LocalAddr returned: %#v\", a)\n\t}\n}\n\nfunc (u *StdConn) ReloadConfig(c *config.C) {\n\t// TODO\n}\n\nfunc NewUDPStatsEmitter(udpConns []Conn) func() {\n\t// No UDP stats for non-linux\n\treturn func() {}\n}\n\nfunc (u *StdConn) ListenOut(r EncReader, flush func()) error {","sourceCodeStart":148,"sourceCodeEnd":184,"githubUrl":"https://github.com/slackhq/nebula/blob/dd8f660c0ac37903ec4080ca4d3c861ba9342ceb/udp/udp_darwin.go#L148-L184","documentation":"Type-guard failure in Darwin StdConn.LocalAddr: the socket's local address is a *net.UDPAddr whose IP slice could not be converted via netip.AddrFromSlice (bad 4/16-byte length). The raw IP is printed; it indicates a corrupt address from the runtime.","triggerScenarios":"Thrown at udp/udp_darwin.go:166 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Firewall rules or unusual binding configurations can yield an IP netip.AddrFromSlice rejects (nil or wrong-length slice); verify the listen host in config is a valid IPv4/IPv6 address, not a hostname or empty value","Ensure the UDP socket is bound to a concrete address rather than an unspecified/invalid one; check the 'listen.host' setting in the nebula config","This fires when UDPConn.LocalAddr returns a *net.UDPAddr whose IP cannot convert to netip.Addr (typically a nil IP); restarting with a corrected listen address resolves it","If it occurs with systemd socket activation or inherited fds, confirm the passed socket has a valid bound address"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"dd8f660c0ac37903ec4080ca4d3c861ba9342ceb","analyzedAt":"2026-09-03T11:13:55.444Z","contentChangedAt":"2026-09-03T11:13:55.444Z","schemaVersion":2},"datasetVersion":"2026-09-10T17:17:09.494Z"}