Go's manet package provides InterfaceMultiaddrs() which returns all local interface addresses as Multiaddr objects. Python has get_network_addrs() in utils.py but it returns raw IP strings, not Multiaddr objects.
Problem
Go:
addrs, _ := manet.InterfaceMultiaddrs()
// Returns: [Multiaddr("/ip4/192.168.1.100"), Multiaddr("/ip6/fe80::1"), ...]
Python:
addrs = get_network_addrs(4)
# Returns: ["192.168.1.100"] ← Raw strings, not Multiaddr objects
Proposed Solution
Add interface_multiaddrs():
def interface_multiaddrs() -> list[Multiaddr]:
"""Return all local interface addresses as Multiaddr objects.
Excludes link-local IPv6 addresses.
"""
result = []
for ip_str in get_network_addrs(4):
result.append(Multiaddr(f"/ip4/{ip_str}"))
for ip_str in get_network_addrs(6):
result.append(Multiaddr(f"/ip6/{ip_str}"))
return result
Related
Go's
manetpackage providesInterfaceMultiaddrs()which returns all local interface addresses as Multiaddr objects. Python hasget_network_addrs()inutils.pybut it returns raw IP strings, not Multiaddr objects.Problem
Go:
Python:
Proposed Solution
Add
interface_multiaddrs():Related
net/net.goInterfaceMultiaddrs()