IF_NAMETOINDEX(3) | Library Functions Manual | IF_NAMETOINDEX(3)

# NAME

`if_nametoindex`, `if_indextoname`, `if_nameindex`, `if_freenameindex` — convert interface index to name, and vice versa

# SYNOPSIS

`#include <sys/types.h>`
`#include <sys/socket.h>`
`#include <net/if.h>`

unsigned int
`if_nametoindex`(const char *ifname);

char *
`if_indextoname`(unsigned int ifindex, char *ifname);

struct if_nameindex *
`if_nameindex`(void);

void
`if_freenameindex`(struct if_nameindex *ptr);

# DESCRIPTION

These functions map interface indexes to interface names (such as “lo0”), and vice versa.

The `if_nametoindex`() function converts an interface name specified by the ifname argument to an interface index (positive integer value). If the specified interface does not exist, 0 will be returned.

`if_indextoname`() converts an interface index specified by the ifindex argument to an interface name. The ifname argument must point to a buffer of at least `IF_NAMESIZE` bytes into which the interface name corresponding to the specified index is returned. (`IF_NAMESIZE` is also defined in `<net/if.h>` and its value includes a terminating NUL byte at the end of the interface name.) This pointer is also the return value of the function. If there is no interface corresponding to the specified index, `NULL` is returned.

`if_nameindex`() returns an array of if_nameindex structures. if_nameindex is also defined in `<net/if.h>`, and is as follows:

    struct if_nameindex {
    	unsigned int	  if_index;	/* 1, 2, ... */
    	char		 *if_name;	/* NUL-terminated name */
    };

The end of the array of structures is indicated by a structure with an if_index of 0 and an if_name of `NULL`. The function returns a null pointer on error. The memory used for this array of structures along with the interface names pointed to by the if_name members is obtained dynamically. This memory is freed by the `if_freenameindex`() function.

`if_freenameindex`() takes a pointer that was returned by `if_nameindex`() as argument (ptr), and it reclaims the region allocated.

# DIAGNOSTICS

`if_nametoindex`() returns 0 on error, positive integer on success. `if_indextoname`() and `if_nameindex`() return `NULL` on errors.

# SEE ALSO

getifaddrs(3), netintro(4)

# STANDARDS

R. Gilligan, S. Thomson, J. Bound, J. McCann, and W. Stevens, Basic Socket Interface Extensions for IPv6, RFC 3493, February 2003.

June 13, 2025 | Debian