IF_NAMETOINDEX(3XNET) X/Open Networking Services Library Functions


if_nametoindex, if_indextoname, if_nameindex, if_freenameindex -
functions to map Internet Protocol network interface names and interface


cc [ flag... ] file... -lxnet [ library... ]
#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);


These functions support the following parameters:

interface name

interface index

pointer returned by if_nameindex()


This API defines two functions that map between an Internet Protocol
network interface name and index, a third function that returns all the
interface names and indexes, and a fourth function to return the dynamic
memory allocated by the previous function.

Network interfaces are normally known by names such as eri0, sl1, ppp2,
and the like. 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 defined in <net/if.h> and its
value includes a terminating null byte at the end of the interface name.

The if_nametoindex() function returns the interface
index corresponding to the interface name pointed
to by the ifname pointer. If the specified
interface name does not exist, the return value is
0, and errno is set to ENXIO. If there was a system
error, such as running out of memory, the return
value is 0 and errno is set to the proper value,
for example, ENOMEM.

The if_indextoname() function maps an interface
index into its corresponding name. This pointer is
also the return value of the function. If there is
no interface corresponding to the specified index,
NULL is returned, and errno is set to ENXIO, if
there was a system error, such as running out of
memory, if_indextoname() returns NULL and errno
would be set to the proper value, for example,

The if_nameindex() function returns an array of
if_nameindex structures, one structure per
interface. The if_nameindex structure holds the
information about a single interface and is defined
when the <net/if.h> header is included:

struct if_nameindex {
unsigned int if_index; /* 1, 2, ... */
char *if_name; /* null terminated name: "eri0", ... */

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 upon an
error and sets errno to the appropriate value. 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.

The if_freenameindex() function frees the dynamic
memory that was allocated by if_nameindex(). The
argument to this function must be a pointer that
was returned by if_nameindex().


See attributes(5) for descriptions of the following attributes:

|Interface Stability | Standard |
|MT-Level | MT-Safe |


ifconfig(1M), if_nametoindex(3SOCKET), attributes(5), standards(5),

December 14, 2003 IF_NAMETOINDEX(3XNET)