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