.\" Copyright (c) 2012 YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of
.\" this manual under the conditions for verbatim copying, provided that
.\" the entire resulting derived work is distributed under the terms of
.\" a permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume
.\" no responsibility for errors or omissions, or for damages resulting
.\" from the use of the information contained herein.  The author(s) may
.\" not have taken the same level of care in the production of this
.\" manual, which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.TH IF_NAMETOINDEX 3 2017-09-15 "GNU" "Linux Programmer's Manual"
.SH NAME
if_nametoindex, if_indextoname \- mappings between network interface
names and indexes
.SH SYNOPSIS
.nf
.B #include <net/if.h>
.PP
.BI "unsigned int if_nametoindex(const char *" "ifname" );
.PP
.BI "char *if_indextoname(unsigned int ifindex, char *" ifname );
.fi
.SH DESCRIPTION
The
.BR if_nametoindex ()
function returns the index of the network interface
corresponding to the name
.IR ifname .
.PP
The
.BR if_indextoname ()
function returns the name of the network interface
corresponding to the interface index
.IR ifindex .
The name is placed in the buffer pointed to by
.IR ifname .
The buffer must allow for the storage of at least
.B IF_NAMESIZE
bytes.
.SH RETURN VALUE
On success,
.BR if_nametoindex ()
returns the index number of the network interface;
on error, 0 is returned and
.I errno
is set appropriately.
.PP
On success,
.BR if_indextoname ()
returns
.IR ifname ;
on error, NULL is returned and
.I errno
is set appropriately.
.SH ERRORS
.BR if_nametoindex ()
may fail and set
.I errno
if:
.TP
.B ENODEV
No interface found with given name.
.PP
.BR if_indextoname ()
may fail and set
.I errno
if:
.TP
.B ENXIO
No interface found for the index.
.PP
.BR if_nametoindex ()
and
.BR if_indextoname ()
may also fail for any of the errors specified for
.BR socket (2)
or
.BR ioctl (2).
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbw34 lb lb
l l l.
Interface	Attribute	Value
T{
.BR if_nametoindex (),
.BR if_indextoname ()
T}	Thread safety	MT-Safe
.TE
.SH CONFORMING TO
POSIX.1-2001, POSIX.1-2008, RFC\ 3493.
.PP
This function first appeared in BSDi.
.SH SEE ALSO
.BR getifaddrs (3),
.BR if_nameindex (3),
.BR ifconfig (8)
