xref: /freebsd/lib/libc/net/getifaddrs.3 (revision fe08efe680f6705e0c60beabe3e39629c655e743)
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
11323ba0142SJun-ichiro itojun Haginofield references address family specific data.  For
11423ba0142SJun-ichiro itojun Hagino.Dv AF_LINK
11523ba0142SJun-ichiro itojun Haginoaddresses it contains a pointer to the
11623ba0142SJun-ichiro itojun Hagino.Fa struct if_data
117c4d9468eSRuslan Ermilov(as defined in include file
118fe08efe6SRuslan Ermilov.In net/if.h )
11923ba0142SJun-ichiro itojun Haginowhich contains various interface attributes and statistics.
12023ba0142SJun-ichiro itojun HaginoFor all other address families, it contains a pointer to the
12123ba0142SJun-ichiro itojun Hagino.Fa struct ifa_data
122c4d9468eSRuslan Ermilov(as defined in include file
123fe08efe6SRuslan Ermilov.In net/if.h )
12423ba0142SJun-ichiro itojun Haginowhich contains per-address interface statistics.
12523ba0142SJun-ichiro itojun Hagino.Pp
12623ba0142SJun-ichiro itojun HaginoThe data returned by
12723ba0142SJun-ichiro itojun Hagino.Fn getifaddrs
12823ba0142SJun-ichiro itojun Haginois dynamically allocated and should be freed using
12923ba0142SJun-ichiro itojun Hagino.Fn freeifaddrs
13023ba0142SJun-ichiro itojun Haginowhen no longer needed.
13123ba0142SJun-ichiro itojun Hagino.Sh RETURN VALUES
132d6002fefSRuslan Ermilov.Rv -std getifaddrs
13323ba0142SJun-ichiro itojun Hagino.Sh ERRORS
13423ba0142SJun-ichiro itojun HaginoThe
13523ba0142SJun-ichiro itojun Hagino.Fn getifaddrs
13623ba0142SJun-ichiro itojun Haginomay fail and set
13723ba0142SJun-ichiro itojun Hagino.Va errno
13823ba0142SJun-ichiro itojun Haginofor any of the errors specified for the library routines
13923ba0142SJun-ichiro itojun Hagino.Xr ioctl 2 ,
14023ba0142SJun-ichiro itojun Hagino.Xr socket 2 ,
14123ba0142SJun-ichiro itojun Hagino.Xr malloc 3
14223ba0142SJun-ichiro itojun Haginoor
14323ba0142SJun-ichiro itojun Hagino.Xr sysctl 3 .
14423ba0142SJun-ichiro itojun Hagino.Sh BUGS
14523ba0142SJun-ichiro itojun HaginoIf both
146fe08efe6SRuslan Ermilov.In net/if.h
14723ba0142SJun-ichiro itojun Haginoand
148fe08efe6SRuslan Ermilov.In ifaddrs.h
14923ba0142SJun-ichiro itojun Haginoare being included,
150fe08efe6SRuslan Ermilov.In net/if.h
15123ba0142SJun-ichiro itojun Hagino.Em must
15223ba0142SJun-ichiro itojun Haginobe included before
153fe08efe6SRuslan Ermilov.In ifaddrs.h .
15423ba0142SJun-ichiro itojun Hagino.Sh SEE ALSO
15523ba0142SJun-ichiro itojun Hagino.Xr ioctl 2 ,
15623ba0142SJun-ichiro itojun Hagino.Xr socket 2 ,
15723ba0142SJun-ichiro itojun Hagino.Xr sysctl 3 ,
15823ba0142SJun-ichiro itojun Hagino.Xr networking 4 ,
15923ba0142SJun-ichiro itojun Hagino.Xr ifconfig 8
16023ba0142SJun-ichiro itojun Hagino.Sh HISTORY
16123ba0142SJun-ichiro itojun HaginoThe
16223ba0142SJun-ichiro itojun Hagino.Nm
163ed2879a5SRuslan Ermilovimplementation first appeared in BSDi
164ed2879a5SRuslan Ermilov.Bsx .
165