123ba0142SJun-ichiro itojun Hagino.\" $FreeBSD$ 223ba0142SJun-ichiro itojun Hagino.\" $KAME: getifaddrs.3,v 1.4 2000/05/17 14:13:14 itojun Exp $ 323ba0142SJun-ichiro itojun Hagino.\" BSDI getifaddrs.3,v 2.5 2000/02/23 14:51:59 dab Exp 423ba0142SJun-ichiro itojun Hagino.\" 523ba0142SJun-ichiro itojun Hagino.\" Copyright (c) 1995, 1999 623ba0142SJun-ichiro itojun Hagino.\" Berkeley Software Design, Inc. All rights reserved. 723ba0142SJun-ichiro itojun Hagino.\" 823ba0142SJun-ichiro itojun Hagino.\" Redistribution and use in source and binary forms, with or without 923ba0142SJun-ichiro itojun Hagino.\" modification, are permitted provided that the following conditions 1023ba0142SJun-ichiro itojun Hagino.\" are met: 1123ba0142SJun-ichiro itojun Hagino.\" 1. Redistributions of source code must retain the above copyright 1223ba0142SJun-ichiro itojun Hagino.\" notice, this list of conditions and the following disclaimer. 1323ba0142SJun-ichiro itojun Hagino.\" 1423ba0142SJun-ichiro itojun Hagino.\" THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``AS IS'' AND 1523ba0142SJun-ichiro itojun Hagino.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1623ba0142SJun-ichiro itojun Hagino.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1723ba0142SJun-ichiro itojun Hagino.\" ARE DISCLAIMED. IN NO EVENT SHALL Berkeley Software Design, Inc. BE LIABLE 1823ba0142SJun-ichiro itojun Hagino.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1923ba0142SJun-ichiro itojun Hagino.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2023ba0142SJun-ichiro itojun Hagino.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2123ba0142SJun-ichiro itojun Hagino.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2223ba0142SJun-ichiro itojun Hagino.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2323ba0142SJun-ichiro itojun Hagino.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2423ba0142SJun-ichiro itojun Hagino.\" SUCH DAMAGE. 25a2fd3702SRuslan Ermilov.Dd October 12, 1995 2623ba0142SJun-ichiro itojun Hagino.Dt GETIFADDRS 3 27a2fd3702SRuslan Ermilov.Os 2823ba0142SJun-ichiro itojun Hagino.Sh NAME 2923ba0142SJun-ichiro itojun Hagino.Nm getifaddrs 3023ba0142SJun-ichiro itojun Hagino.Nd get interface addresses 3123ba0142SJun-ichiro itojun Hagino.Sh SYNOPSIS 3232eef9aeSRuslan Ermilov.In sys/types.h 3332eef9aeSRuslan Ermilov.In sys/socket.h 3432eef9aeSRuslan Ermilov.In ifaddrs.h 3523ba0142SJun-ichiro itojun Hagino.Ft int 3623ba0142SJun-ichiro itojun Hagino.Fn getifaddrs "struct ifaddrs **ifap" 3723ba0142SJun-ichiro itojun Hagino.Ft void 3823ba0142SJun-ichiro itojun Hagino.Fn freeifaddrs "struct ifaddrs *ifp" 3923ba0142SJun-ichiro itojun Hagino.Sh DESCRIPTION 4023ba0142SJun-ichiro itojun HaginoThe 4123ba0142SJun-ichiro itojun Hagino.Fn getifaddrs 4223ba0142SJun-ichiro itojun Haginofunction stores a reference to a linked list of the network interfaces 4323ba0142SJun-ichiro itojun Haginoon the local machine in the memory referenced by 4423ba0142SJun-ichiro itojun Hagino.Fa ifap . 4523ba0142SJun-ichiro itojun HaginoThe list consists of 4623ba0142SJun-ichiro itojun Hagino.Nm ifaddrs 4723ba0142SJun-ichiro itojun Haginostructures, as defined in the include file 48fe08efe6SRuslan Ermilov.In ifaddrs.h . 4923ba0142SJun-ichiro itojun HaginoThe 5023ba0142SJun-ichiro itojun Hagino.Nm ifaddrs 5123ba0142SJun-ichiro itojun Haginostructure contains at least the following entries: 5223ba0142SJun-ichiro itojun Hagino.Bd -literal 5323ba0142SJun-ichiro itojun Hagino struct ifaddrs *ifa_next; /* Pointer to next struct */ 5423ba0142SJun-ichiro itojun Hagino char *ifa_name; /* Interface name */ 5523ba0142SJun-ichiro itojun Hagino u_int ifa_flags; /* Interface flags */ 5623ba0142SJun-ichiro itojun Hagino struct sockaddr *ifa_addr; /* Interface address */ 5723ba0142SJun-ichiro itojun Hagino struct sockaddr *ifa_netmask; /* Interface netmask */ 5823ba0142SJun-ichiro itojun Hagino struct sockaddr *ifa_broadaddr; /* Interface broadcast address */ 5923ba0142SJun-ichiro itojun Hagino struct sockaddr *ifa_dstaddr; /* P2P interface destination */ 6023ba0142SJun-ichiro itojun Hagino void *ifa_data; /* Address specific data */ 6123ba0142SJun-ichiro itojun Hagino.Ed 6223ba0142SJun-ichiro itojun Hagino.Pp 6323ba0142SJun-ichiro itojun HaginoThe 6423ba0142SJun-ichiro itojun Hagino.Li ifa_next 6523ba0142SJun-ichiro itojun Haginofield contains a pointer to the next structure on the list. 6623ba0142SJun-ichiro itojun HaginoThis field is 6723ba0142SJun-ichiro itojun Hagino.Dv NULL 6823ba0142SJun-ichiro itojun Haginoin last structure on the list. 6923ba0142SJun-ichiro itojun Hagino.Pp 7023ba0142SJun-ichiro itojun HaginoThe 7123ba0142SJun-ichiro itojun Hagino.Li ifa_name 7223ba0142SJun-ichiro itojun Haginofield contains the interface name. 7323ba0142SJun-ichiro itojun Hagino.Pp 7423ba0142SJun-ichiro itojun HaginoThe 7523ba0142SJun-ichiro itojun Hagino.Li ifa_flags 7623ba0142SJun-ichiro itojun Haginofield contains the interface flags, as set by 7723ba0142SJun-ichiro itojun Hagino.Xr ifconfig 8 7823ba0142SJun-ichiro itojun Haginoutility. 7923ba0142SJun-ichiro itojun Hagino.Pp 8023ba0142SJun-ichiro itojun HaginoThe 8123ba0142SJun-ichiro itojun Hagino.Li ifa_addr 8223ba0142SJun-ichiro itojun Haginofield references either the address of the interface or the link level 8323ba0142SJun-ichiro itojun Haginoaddress of the interface, if one exists, otherwise it is NULL. 8423ba0142SJun-ichiro itojun Hagino(The 8523ba0142SJun-ichiro itojun Hagino.Li sa_family 8623ba0142SJun-ichiro itojun Haginofield of the 8723ba0142SJun-ichiro itojun Hagino.Li ifa_addr 8823ba0142SJun-ichiro itojun Haginofield should be consulted to determine the format of the 8923ba0142SJun-ichiro itojun Hagino.Li ifa_addr 9023ba0142SJun-ichiro itojun Haginoaddress.) 9123ba0142SJun-ichiro itojun Hagino.Pp 9223ba0142SJun-ichiro itojun HaginoThe 9323ba0142SJun-ichiro itojun Hagino.Li ifa_netmask 9423ba0142SJun-ichiro itojun Haginofield references the netmask associated with 9523ba0142SJun-ichiro itojun Hagino.Li ifa_addr , 9623ba0142SJun-ichiro itojun Haginoif one is set, otherwise it is NULL. 9723ba0142SJun-ichiro itojun Hagino.Pp 9823ba0142SJun-ichiro itojun HaginoThe 9923ba0142SJun-ichiro itojun Hagino.Li ifa_broadaddr 10023ba0142SJun-ichiro itojun Haginofield, 10123ba0142SJun-ichiro itojun Haginowhich should only be referenced for non-P2P interfaces, 10223ba0142SJun-ichiro itojun Haginoreferences the broadcast address associated with 10323ba0142SJun-ichiro itojun Hagino.Li ifa_addr , 10423ba0142SJun-ichiro itojun Haginoif one exists, otherwise it is NULL. 10523ba0142SJun-ichiro itojun Hagino.Pp 10623ba0142SJun-ichiro itojun HaginoThe 10723ba0142SJun-ichiro itojun Hagino.Li ifa_dstaddr 10823ba0142SJun-ichiro itojun Haginofield references the destination address on a P2P interface, 10923ba0142SJun-ichiro itojun Haginoif one exists, otherwise it is NULL. 11023ba0142SJun-ichiro itojun Hagino.Pp 11123ba0142SJun-ichiro itojun HaginoThe 11223ba0142SJun-ichiro itojun Hagino.Li ifa_data 1131a0a9345SRuslan Ermilovfield references address family specific data. 1141a0a9345SRuslan ErmilovFor 11523ba0142SJun-ichiro itojun Hagino.Dv AF_LINK 11623ba0142SJun-ichiro itojun Haginoaddresses it contains a pointer to the 11723ba0142SJun-ichiro itojun Hagino.Fa struct if_data 118c4d9468eSRuslan Ermilov(as defined in include file 119fe08efe6SRuslan Ermilov.In net/if.h ) 12023ba0142SJun-ichiro itojun Haginowhich contains various interface attributes and statistics. 12123ba0142SJun-ichiro itojun HaginoFor all other address families, it contains a pointer to the 12223ba0142SJun-ichiro itojun Hagino.Fa struct ifa_data 123c4d9468eSRuslan Ermilov(as defined in include file 124fe08efe6SRuslan Ermilov.In net/if.h ) 12523ba0142SJun-ichiro itojun Haginowhich contains per-address interface statistics. 12623ba0142SJun-ichiro itojun Hagino.Pp 12723ba0142SJun-ichiro itojun HaginoThe data returned by 12823ba0142SJun-ichiro itojun Hagino.Fn getifaddrs 12923ba0142SJun-ichiro itojun Haginois dynamically allocated and should be freed using 13023ba0142SJun-ichiro itojun Hagino.Fn freeifaddrs 13123ba0142SJun-ichiro itojun Haginowhen no longer needed. 13223ba0142SJun-ichiro itojun Hagino.Sh RETURN VALUES 133d6002fefSRuslan Ermilov.Rv -std getifaddrs 13423ba0142SJun-ichiro itojun Hagino.Sh ERRORS 13523ba0142SJun-ichiro itojun HaginoThe 13623ba0142SJun-ichiro itojun Hagino.Fn getifaddrs 13723ba0142SJun-ichiro itojun Haginomay fail and set 13823ba0142SJun-ichiro itojun Hagino.Va errno 13923ba0142SJun-ichiro itojun Haginofor any of the errors specified for the library routines 14023ba0142SJun-ichiro itojun Hagino.Xr ioctl 2 , 14123ba0142SJun-ichiro itojun Hagino.Xr socket 2 , 14223ba0142SJun-ichiro itojun Hagino.Xr malloc 3 14323ba0142SJun-ichiro itojun Haginoor 14423ba0142SJun-ichiro itojun Hagino.Xr sysctl 3 . 14523ba0142SJun-ichiro itojun Hagino.Sh SEE ALSO 14623ba0142SJun-ichiro itojun Hagino.Xr ioctl 2 , 14723ba0142SJun-ichiro itojun Hagino.Xr socket 2 , 14823ba0142SJun-ichiro itojun Hagino.Xr sysctl 3 , 14923ba0142SJun-ichiro itojun Hagino.Xr networking 4 , 15023ba0142SJun-ichiro itojun Hagino.Xr ifconfig 8 15123ba0142SJun-ichiro itojun Hagino.Sh HISTORY 15223ba0142SJun-ichiro itojun HaginoThe 15323ba0142SJun-ichiro itojun Hagino.Nm 154ed2879a5SRuslan Ermilovimplementation first appeared in BSDi 155ed2879a5SRuslan Ermilov.Bsx . 15624a0682cSRuslan Ermilov.Sh BUGS 15724a0682cSRuslan ErmilovIf both 15824a0682cSRuslan Ermilov.In net/if.h 15924a0682cSRuslan Ermilovand 16024a0682cSRuslan Ermilov.In ifaddrs.h 16124a0682cSRuslan Ermilovare being included, 16224a0682cSRuslan Ermilov.In net/if.h 16324a0682cSRuslan Ermilov.Em must 16424a0682cSRuslan Ermilovbe included before 16524a0682cSRuslan Ermilov.In ifaddrs.h . 166