xref: /freebsd/lib/libc/net/getifaddrs.3 (revision 24a0682c6465290759ed0b09ea16e40e7cd47053)
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