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