Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > I


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


if_nameindex(), if_nametoindex(), if_indextoname(), if_freenameindex() — functions that map between an interface name and index value


#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);


Interfaces are normally known by names such as "lan0" and "vlan200." The index is a unique positive integer value assigned to an interface. Index values start at 1, and 0 is not a valid index.


This function maps an interface name into its corresponding index. If the specified interface name does not exist, the return value is set to 0 and errno is set to ENXIO. If there is a system error, the return value is 0, and errno is set to the appropriate value. For example, if the system is running out of memory, errno will be set to ENOMEM.


This function maps an interface index into its corresponding 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. This pointer is also the return value of the function. IF_NAMESIZE is defined in <net/if.h> and its value includes a terminating null byte at the end of the interface name. If there is no interface corresponding to the specified index, NULL is returned and errno is set to ENXIO. If there is a system error, the return value is 0, and errno is set to the appropriate value.


This function returns all interface names and indexes as an array of if_nameindex structures, one structure per interface. The if_nameindex structure is defined in <net/if.h>.

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

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 would set 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 next if_freenameindex() function.


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


The function prototypes and struct if_nameindex were defined in <net/if6.h> prior to HP-UX 11i v3. They are now defined in <net/if.h>.

Beginning with HP-UX 11i v3, these functions may pass on both IPv4 and IPv6 interfaces, and they no longer reside in the IPv6 library. They currently reside in the C library. Therefore, applications using these functions no longer need to link with -lipv6. Applications using other IPv6 interfaces that reside in IPv6 library will need to continue to link with -lipv6.


if_nametoindex(), if_indextoname(), if_nameindex(), and if_freenameindex() were developed by HP, IETF, and X/Open Company Limited.


When if_nametoindex() or if_indextoname() fails, the following error message is set in errno.


The specified interface or index does not exist.


socket(): UNIX 03

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.