On FreeBSD, netroute.Router.Route('0.0.0.0') returns an error instead of returning the default route. We need some other way to determine the default route. We could just try looking up a well known IP address.
|
if r, err := netroute.New(); err != nil { |
|
log.Debugw("failed to build Router for kernel's routing table", "err", err) |
|
} else { |
|
if _, _, localIPv4, err := r.Route(net.IPv4zero); err != nil { |
|
log.Debugw("failed to fetch local IPv4 address", "err", err) |
|
} else { |
|
maddr, err := manet.FromIP(localIPv4) |
|
if err == nil { |
|
h.localIPv4Addr = maddr |
|
} |
|
} |
|
|
|
if _, _, localIpv6, err := r.Route(net.IPv6unspecified); err != nil { |
|
log.Debugw("failed to fetch local IPv6 address", "err", err) |
|
} else { |
|
maddr, err := manet.FromIP(localIpv6) |
|
if err == nil { |
|
h.localIPv6Addr = maddr |
|
} |
|
} |
|
} |
On FreeBSD,
netroute.Router.Route('0.0.0.0')returns an error instead of returning the default route. We need some other way to determine the default route. We could just try looking up a well known IP address.go-libp2p/p2p/host/basic/basic_host.go
Lines 260 to 280 in 6a3b138