libdill: Structured Concurrency for C


ipaddr_local - resolve the address of a local network interface


#include <libdill.h>

int ipaddr_local(
    struct ipaddr* addr,
    const char* name,
    int port,
    int mode);


Converts an IP address in human-readable format, or a name of a local network interface into an ipaddr structure.

Mode specifies which kind of addresses should be returned. Possible values are:

Setting the argument to zero invokes default behaviour, which, at the present, is IPADDR_PREF_IPV4. However, in the future when IPv6 becomes more common it may be switched to IPADDR_PREF_IPV6.

addr: Out parameter, The IP address object.

name: Name of the local network interface, such as "eth0", "" or "::1".

port: Port number. Valid values are 1-65535.

mode: What kind of address to return. See above.

This function is not available if libdill is compiled with --disable-sockets option.


In case of success the function returns 0. In case of error it returns -1 and sets errno to one of the values below.



struct ipaddr addr;
ipaddr_local(&addr, "eth0", 5555, 0);
int s = socket(ipaddr_family(addr), SOCK_STREAM, 0);
bind(s, ipaddr_sockaddr(&addr), ipaddr_len(&addr));


ipaddr_equal(3) ipaddr_family(3) ipaddr_len(3) ipaddr_port(3) ipaddr_remote(3) ipaddr_remotes(3) ipaddr_setport(3) ipaddr_sockaddr(3) ipaddr_str(3)