xref: /freebsd/lib/libc/net/if_indextoname.3 (revision fa9896e0)
18071d8d7SHajimu UMEMOTO.\"	$KAME: if_indextoname.3,v 1.10 2000/11/24 08:13:51 itojun Exp $
28071d8d7SHajimu UMEMOTO.\"	BSDI	Id: if_indextoname.3,v 2.2 2000/04/17 22:38:05 dab Exp
38071d8d7SHajimu UMEMOTO.\"
48071d8d7SHajimu UMEMOTO.\" Copyright (c) 1997, 2000
58071d8d7SHajimu UMEMOTO.\"	Berkeley Software Design, Inc.  All rights reserved.
605a244b4SYoshinobu Inoue.\"
705a244b4SYoshinobu Inoue.\" Redistribution and use in source and binary forms, with or without
805a244b4SYoshinobu Inoue.\" modification, are permitted provided that the following conditions
905a244b4SYoshinobu Inoue.\" are met:
1005a244b4SYoshinobu Inoue.\" 1. Redistributions of source code must retain the above copyright
1105a244b4SYoshinobu Inoue.\"    notice, this list of conditions and the following disclaimer.
1205a244b4SYoshinobu Inoue.\"
138071d8d7SHajimu UMEMOTO.\" THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``AS IS'' AND
1405a244b4SYoshinobu Inoue.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1505a244b4SYoshinobu Inoue.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
168071d8d7SHajimu UMEMOTO.\" ARE DISCLAIMED.  IN NO EVENT SHALL Berkeley Software Design, Inc. BE LIABLE
1705a244b4SYoshinobu Inoue.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1805a244b4SYoshinobu Inoue.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
1905a244b4SYoshinobu Inoue.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2005a244b4SYoshinobu Inoue.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2105a244b4SYoshinobu Inoue.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2205a244b4SYoshinobu Inoue.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2305a244b4SYoshinobu Inoue.\" SUCH DAMAGE.
2405a244b4SYoshinobu Inoue.\"
25c48648d2SRuslan Ermilov.Dd November 23, 2005
2605a244b4SYoshinobu Inoue.Dt IF_NAMETOINDEX 3
271bf6f719SJun-ichiro itojun Hagino.Os
2805a244b4SYoshinobu Inoue.Sh NAME
2905a244b4SYoshinobu Inoue.Nm if_nametoindex ,
3005a244b4SYoshinobu Inoue.Nm if_indextoname ,
3105a244b4SYoshinobu Inoue.Nm if_nameindex ,
3205a244b4SYoshinobu Inoue.Nm if_freenameindex
338071d8d7SHajimu UMEMOTO.Nd provide mappings between interface names and indexes
3405a244b4SYoshinobu Inoue.Sh SYNOPSIS
35c48648d2SRuslan Ermilov.In sys/types.h
36c48648d2SRuslan Ermilov.In sys/socket.h
3732eef9aeSRuslan Ermilov.In net/if.h
38e0fe2c62SRuslan Ermilov.Ft "unsigned int"
3905a244b4SYoshinobu Inoue.Fn if_nametoindex "const char *ifname"
40e0fe2c62SRuslan Ermilov.Ft "char *"
4105a244b4SYoshinobu Inoue.Fn if_indextoname "unsigned int ifindex" "char *ifname"
42e0fe2c62SRuslan Ermilov.Ft "struct if_nameindex *"
4305a244b4SYoshinobu Inoue.Fn if_nameindex "void"
448071d8d7SHajimu UMEMOTO.Ft void
4505a244b4SYoshinobu Inoue.Fn if_freenameindex "struct if_nameindex *ptr"
4605a244b4SYoshinobu Inoue.Sh DESCRIPTION
4705a244b4SYoshinobu InoueThe
488071d8d7SHajimu UMEMOTO.Fn if_nametoindex
498071d8d7SHajimu UMEMOTOfunction maps the interface name specified in
50e0fe2c62SRuslan Ermilov.Fa ifname
518071d8d7SHajimu UMEMOTOto its corresponding index.
528071d8d7SHajimu UMEMOTOIf the specified interface does not exist, it returns 0.
5305a244b4SYoshinobu Inoue.Pp
548071d8d7SHajimu UMEMOTOThe
558071d8d7SHajimu UMEMOTO.Fn if_indextoname
568071d8d7SHajimu UMEMOTOfunction maps the interface index specified in
57e0fe2c62SRuslan Ermilov.Fa ifindex
588071d8d7SHajimu UMEMOTOto it corresponding name, which is copied into the
598071d8d7SHajimu UMEMOTObuffer pointed to by
60e0fe2c62SRuslan Ermilov.Fa ifname ,
61e0fe2c62SRuslan Ermilovwhich must be of at least
62e0fe2c62SRuslan Ermilov.Dv IFNAMSIZ
63e0fe2c62SRuslan Ermilovbytes.
648071d8d7SHajimu UMEMOTOThis pointer is also the return value of the function.
658071d8d7SHajimu UMEMOTOIf there is no interface corresponding to the specified
66e0fe2c62SRuslan Ermilovindex,
67e0fe2c62SRuslan Ermilov.Dv NULL
68e0fe2c62SRuslan Ermilovis returned.
698071d8d7SHajimu UMEMOTO.Pp
708071d8d7SHajimu UMEMOTOThe
7105a244b4SYoshinobu Inoue.Fn if_nameindex
728071d8d7SHajimu UMEMOTOfunction returns an array of
73e0fe2c62SRuslan Ermilov.Vt if_nameindex
748071d8d7SHajimu UMEMOTOstructures, one structure per interface, as
758071d8d7SHajimu UMEMOTOdefined in the include file
76fe08efe6SRuslan Ermilov.In net/if.h .
778071d8d7SHajimu UMEMOTOThe
78e0fe2c62SRuslan Ermilov.Vt if_nameindex
798071d8d7SHajimu UMEMOTOstructure contains at least the following entries:
808071d8d7SHajimu UMEMOTO.Bd -literal
8105a244b4SYoshinobu Inoue    unsigned int   if_index;  /* 1, 2, ... */
8205a244b4SYoshinobu Inoue    char          *if_name;   /* null terminated name: "le0", ... */
8305a244b4SYoshinobu Inoue.Ed
8405a244b4SYoshinobu Inoue.Pp
858071d8d7SHajimu UMEMOTOThe end of the array of structures is indicated by a structure with an
86e0fe2c62SRuslan Ermilov.Va if_index
8705a244b4SYoshinobu Inoueof 0 and an
88e0fe2c62SRuslan Ermilov.Va if_name
89e0fe2c62SRuslan Ermilovof
90e0fe2c62SRuslan Ermilov.Dv NULL .
91e0fe2c62SRuslan ErmilovA
92e0fe2c62SRuslan Ermilov.Dv NULL
93e0fe2c62SRuslan Ermilovpointer is returned upon an error.
9405a244b4SYoshinobu Inoue.Pp
958071d8d7SHajimu UMEMOTOThe
9605a244b4SYoshinobu Inoue.Fn if_freenameindex
978071d8d7SHajimu UMEMOTOfunction frees the dynamic memory that was
988071d8d7SHajimu UMEMOTOallocated by
998071d8d7SHajimu UMEMOTO.Fn if_nameindex .
1008071d8d7SHajimu UMEMOTO.Sh RETURN VALUES
1018071d8d7SHajimu UMEMOTOUpon successful completion,
10205a244b4SYoshinobu Inoue.Fn if_nametoindex
1038071d8d7SHajimu UMEMOTOreturns the index number of the interface.
1048071d8d7SHajimu UMEMOTOIf the interface is not found, a value of 0 is returned and
1058071d8d7SHajimu UMEMOTO.Va errno
1068071d8d7SHajimu UMEMOTOis set to
1078071d8d7SHajimu UMEMOTO.Er ENXIO .
1088071d8d7SHajimu UMEMOTOA value of 0 is also returned if an error
1098071d8d7SHajimu UMEMOTOoccurs while retrieving the list of interfaces via
1108071d8d7SHajimu UMEMOTO.Xr getifaddrs 3 .
1118071d8d7SHajimu UMEMOTO.Pp
1128071d8d7SHajimu UMEMOTOUpon successful completion,
11305a244b4SYoshinobu Inoue.Fn if_indextoname
1148071d8d7SHajimu UMEMOTOreturns
115e0fe2c62SRuslan Ermilov.Fa ifname .
116e0fe2c62SRuslan ErmilovIf the interface is not found, a
117e0fe2c62SRuslan Ermilov.Dv NULL
118e0fe2c62SRuslan Ermilovpointer is returned and
1198071d8d7SHajimu UMEMOTO.Va errno
1208071d8d7SHajimu UMEMOTOis set to
1218071d8d7SHajimu UMEMOTO.Er ENXIO .
122e0fe2c62SRuslan ErmilovA
123e0fe2c62SRuslan Ermilov.Dv NULL
124e0fe2c62SRuslan Ermilovpointer is also returned if an error
1258071d8d7SHajimu UMEMOTOoccurs while retrieving the list of interfaces via
1268071d8d7SHajimu UMEMOTO.Xr getifaddrs 3 .
1278071d8d7SHajimu UMEMOTO.Pp
1288071d8d7SHajimu UMEMOTOThe
12905a244b4SYoshinobu Inoue.Fn if_nameindex
130e0fe2c62SRuslan Ermilovreturns a
131e0fe2c62SRuslan Ermilov.Dv NULL
132e0fe2c62SRuslan Ermilovpointer if an error
1338071d8d7SHajimu UMEMOTOoccurs while retrieving the list of interfaces via
1348071d8d7SHajimu UMEMOTO.Xr getifaddrs 3 ,
1358071d8d7SHajimu UMEMOTOor if sufficient memory cannot be allocated.
13605a244b4SYoshinobu Inoue.Sh SEE ALSO
1378071d8d7SHajimu UMEMOTO.Xr getifaddrs 3 ,
1388071d8d7SHajimu UMEMOTO.Xr networking 4
13905a244b4SYoshinobu Inoue.Sh STANDARDS
1408071d8d7SHajimu UMEMOTOThe
1418071d8d7SHajimu UMEMOTO.Fn if_nametoindex ,
1428071d8d7SHajimu UMEMOTO.Fn if_indextoname ,
1438071d8d7SHajimu UMEMOTO.Fn if_nameindex ,
1448071d8d7SHajimu UMEMOTOand
1458071d8d7SHajimu UMEMOTO.Fn if_freenameindex
146e0fe2c62SRuslan Ermilovfunctions conform to
147e0fe2c62SRuslan Ermilov.%T "RFC 2553" .
1488071d8d7SHajimu UMEMOTO.Sh HISTORY
149e0fe2c62SRuslan ErmilovThe implementation first appeared in BSDi
150e0fe2c62SRuslan Ermilov.Bsx .
151