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