]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - lib/libc/net/getifaddrs.3
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / lib / libc / net / getifaddrs.3
1 .\"     $KAME: getifaddrs.3,v 1.4 2000/05/17 14:13:14 itojun Exp $
2 .\"     BSDI    getifaddrs.3,v 2.5 2000/02/23 14:51:59 dab Exp
3 .\"
4 .\" Copyright (c) 1995, 1999
5 .\"     Berkeley Software Design, Inc.  All rights reserved.
6 .\"
7 .\" Redistribution and use in source and binary forms, with or without
8 .\" modification, are permitted provided that the following conditions
9 .\" are met:
10 .\" 1. Redistributions of source code must retain the above copyright
11 .\"    notice, this list of conditions and the following disclaimer.
12 .\"
13 .\" THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``AS IS'' AND
14 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 .\" ARE DISCLAIMED.  IN NO EVENT SHALL Berkeley Software Design, Inc. BE LIABLE
17 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 .\" SUCH DAMAGE.
24 .\"
25 .\" $FreeBSD$
26 .\"
27 .Dd October 12, 1995
28 .Dt GETIFADDRS 3
29 .Os
30 .Sh NAME
31 .Nm getifaddrs
32 .Nd get interface addresses
33 .Sh SYNOPSIS
34 .In sys/types.h
35 .In sys/socket.h
36 .In ifaddrs.h
37 .Ft int
38 .Fn getifaddrs "struct ifaddrs **ifap"
39 .Ft void
40 .Fn freeifaddrs "struct ifaddrs *ifp"
41 .Sh DESCRIPTION
42 The
43 .Fn getifaddrs
44 function stores a reference to a linked list of the network interfaces
45 on the local machine in the memory referenced by
46 .Fa ifap .
47 The list consists of
48 .Nm ifaddrs
49 structures, as defined in the include file
50 .In ifaddrs.h .
51 The
52 .Nm ifaddrs
53 structure contains at least the following entries:
54 .Bd -literal
55     struct ifaddrs   *ifa_next;         /* Pointer to next struct */
56     char             *ifa_name;         /* Interface name */
57     u_int             ifa_flags;        /* Interface flags */
58     struct sockaddr  *ifa_addr;         /* Interface address */
59     struct sockaddr  *ifa_netmask;      /* Interface netmask */
60     struct sockaddr  *ifa_broadaddr;    /* Interface broadcast address */
61     struct sockaddr  *ifa_dstaddr;      /* P2P interface destination */
62     void             *ifa_data;         /* Address specific data */
63 .Ed
64 .Pp
65 The
66 .Li ifa_next
67 field contains a pointer to the next structure on the list.
68 This field is
69 .Dv NULL
70 in last structure on the list.
71 .Pp
72 The
73 .Li ifa_name
74 field contains the interface name.
75 .Pp
76 The
77 .Li ifa_flags
78 field contains the interface flags, as set by
79 .Xr ifconfig 8
80 utility.
81 .Pp
82 The
83 .Li ifa_addr
84 field references either the address of the interface or the link level
85 address of the interface, if one exists, otherwise it is NULL.
86 (The
87 .Li sa_family
88 field of the
89 .Li ifa_addr
90 field should be consulted to determine the format of the
91 .Li ifa_addr
92 address.)
93 .Pp
94 The
95 .Li ifa_netmask
96 field references the netmask associated with
97 .Li ifa_addr ,
98 if one is set, otherwise it is NULL.
99 .Pp
100 The
101 .Li ifa_broadaddr
102 field,
103 which should only be referenced for non-P2P interfaces,
104 references the broadcast address associated with
105 .Li ifa_addr ,
106 if one exists, otherwise it is NULL.
107 .Pp
108 The
109 .Li ifa_dstaddr
110 field references the destination address on a P2P interface,
111 if one exists, otherwise it is NULL.
112 .Pp
113 The
114 .Li ifa_data
115 field references address family specific data.
116 For
117 .Dv AF_LINK
118 addresses it contains a pointer to the
119 .Fa struct if_data
120 (as defined in include file
121 .In net/if.h )
122 which contains various interface attributes and statistics.
123 For all other address families, it contains a pointer to the
124 .Fa struct ifa_data
125 (as defined in include file
126 .In net/if.h )
127 which contains per-address interface statistics.
128 .Pp
129 The data returned by
130 .Fn getifaddrs
131 is dynamically allocated and should be freed using
132 .Fn freeifaddrs
133 when no longer needed.
134 .Sh RETURN VALUES
135 .Rv -std getifaddrs
136 .Sh ERRORS
137 The
138 .Fn getifaddrs
139 may fail and set
140 .Va errno
141 for any of the errors specified for the library routines
142 .Xr ioctl 2 ,
143 .Xr socket 2 ,
144 .Xr malloc 3
145 or
146 .Xr sysctl 3 .
147 .Sh SEE ALSO
148 .Xr ioctl 2 ,
149 .Xr socket 2 ,
150 .Xr sysctl 3 ,
151 .Xr networking 4 ,
152 .Xr ifconfig 8
153 .Sh HISTORY
154 The
155 .Nm
156 implementation first appeared in BSDi
157 .Bsx .
158 .Sh BUGS
159 If both
160 .In net/if.h
161 and
162 .In ifaddrs.h
163 are being included,
164 .In net/if.h
165 .Em must
166 be included before
167 .In ifaddrs.h .