]>
Commit | Line | Data |
---|---|---|
9bccf70c A |
1 | .\" $NetBSD: netintro.4,v 1.4 1995/10/19 08:03:40 jtc Exp $ |
2 | .\" | |
3 | .\" Copyright (c) 1983, 1990, 1991, 1993 | |
4 | .\" The Regents of the University of California. All rights reserved. | |
5 | .\" | |
6 | .\" Redistribution and use in source and binary forms, with or without | |
7 | .\" modification, are permitted provided that the following conditions | |
8 | .\" are met: | |
9 | .\" 1. Redistributions of source code must retain the above copyright | |
10 | .\" notice, this list of conditions and the following disclaimer. | |
11 | .\" 2. Redistributions in binary form must reproduce the above copyright | |
12 | .\" notice, this list of conditions and the following disclaimer in the | |
13 | .\" documentation and/or other materials provided with the distribution. | |
14 | .\" 3. All advertising materials mentioning features or use of this software | |
15 | .\" must display the following acknowledgement: | |
16 | .\" This product includes software developed by the University of | |
17 | .\" California, Berkeley and its contributors. | |
18 | .\" 4. Neither the name of the University nor the names of its contributors | |
19 | .\" may be used to endorse or promote products derived from this software | |
20 | .\" without specific prior written permission. | |
21 | .\" | |
22 | .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | |
23 | .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
24 | .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
25 | .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
26 | .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
27 | .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
28 | .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
29 | .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
30 | .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
31 | .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
32 | .\" SUCH DAMAGE. | |
33 | .\" | |
34 | .\" @(#)netintro.4 8.2 (Berkeley) 11/30/93 | |
35 | .\" | |
36 | .Dd November 30, 1993 | |
37 | .Dt NETINTRO 4 | |
38 | .Os BSD 4.2 | |
39 | .Sh NAME | |
40 | .Nm networking | |
41 | .Nd introduction to networking facilities | |
42 | .Sh SYNOPSIS | |
43 | .Fd #include <sys/socket.h> | |
44 | .Fd #include <net/route.h> | |
45 | .Fd #include <net/if.h> | |
46 | .Sh DESCRIPTION | |
47 | This section is a general introduction to the networking facilities | |
48 | available in the system. | |
49 | Documentation in this part of section | |
50 | 4 is broken up into three areas: | |
51 | .Em protocol families | |
52 | (domains), | |
53 | .Em protocols , | |
54 | and | |
55 | .Em network interfaces . | |
56 | .Pp | |
57 | All network protocols are associated with a specific | |
58 | .Em protocol family . | |
59 | A protocol family provides basic services to the protocol | |
60 | implementation to allow it to function within a specific | |
61 | network environment. These services may include | |
62 | packet fragmentation and reassembly, routing, addressing, and | |
63 | basic transport. A protocol family may support multiple | |
64 | methods of addressing, though the current protocol implementations | |
65 | do not. A protocol family is normally comprised of a number | |
66 | of protocols, one per | |
67 | .Xr socket 2 | |
68 | type. It is not required that a protocol family support | |
69 | all socket types. A protocol family may contain multiple | |
70 | protocols supporting the same socket abstraction. | |
71 | .Pp | |
72 | A protocol supports one of the socket abstractions detailed in | |
73 | .Xr socket 2 . | |
74 | A specific protocol may be accessed either by creating a | |
75 | socket of the appropriate type and protocol family, or | |
76 | by requesting the protocol explicitly when creating a socket. | |
77 | Protocols normally accept only one type of address format, | |
78 | usually determined by the addressing structure inherent in | |
79 | the design of the protocol family/network architecture. | |
80 | Certain semantics of the basic socket abstractions are | |
81 | protocol specific. All protocols are expected to support | |
82 | the basic model for their particular socket type, but may, | |
83 | in addition, provide non-standard facilities or extensions | |
84 | to a mechanism. For example, a protocol supporting the | |
85 | .Dv SOCK_STREAM | |
86 | abstraction may allow more than one byte of out-of-band | |
87 | data to be transmitted per out-of-band message. | |
88 | .Pp | |
89 | A network interface is similar to a device interface. | |
90 | Network interfaces comprise the lowest layer of the | |
91 | networking subsystem, interacting with the actual transport | |
92 | hardware. An interface may support one or more protocol | |
93 | families and/or address formats. | |
94 | The SYNOPSIS section of each network interface | |
95 | entry gives a sample specification | |
96 | of the related drivers for use in providing | |
97 | a system description to the | |
98 | .Xr config 8 | |
99 | program. | |
100 | The DIAGNOSTICS section lists messages which may appear on the console | |
101 | and/or in the system error log, | |
102 | .Pa /var/log/messages | |
103 | (see | |
104 | .Xr syslogd 8 ) , | |
105 | due to errors in device operation. | |
106 | .Sh PROTOCOLS | |
107 | The system currently supports the | |
108 | Internet | |
109 | protocols, the Xerox Network Systems(tm) protocols, | |
110 | and some of the | |
111 | .Tn ISO OSI | |
112 | protocols. | |
113 | Raw socket interfaces are provided to the | |
114 | .Tn IP | |
115 | protocol | |
116 | layer of the | |
117 | Internet, and to the | |
118 | .Tn IDP | |
119 | protocol of Xerox | |
120 | .Tn NS . | |
121 | Consult the appropriate manual pages in this section for more | |
122 | information regarding the support for each protocol family. | |
123 | .Sh ADDRESSING | |
124 | Associated with each protocol family is an address | |
125 | format. All network address adhere to a general structure, | |
126 | called a sockaddr, described below. However, each protocol | |
127 | imposes finer and more specific structure, generally renaming | |
128 | the variant, which is discussed in the protocol family manual | |
129 | page alluded to above. | |
130 | .Bd -literal -offset indent | |
131 | struct sockaddr { | |
132 | u_char sa_len; | |
133 | u_char sa_family; | |
134 | char sa_data[14]; | |
135 | }; | |
136 | .Ed | |
137 | .Pp | |
138 | The field | |
139 | .Ar sa_len | |
39236c6e | 140 | contains the total length of the structure, |
9bccf70c A |
141 | which may exceed 16 bytes. |
142 | The following address values for | |
143 | .Ar sa_family | |
144 | are known to the system | |
145 | (and additional formats are defined for possible future implementation): | |
146 | .Bd -literal | |
147 | #define AF_UNIX 1 /* local to host (pipes) */ | |
6d2010ae A |
148 | #define AF_INET 2 /* IPv4: UDP, TCP, etc. */ |
149 | #define AF_INET6 30 /* IPv6: UDP, TCP, etc. */ | |
9bccf70c A |
150 | #define AF_NS 6 /* Xerox NS protocols */ |
151 | #define AF_CCITT 10 /* CCITT protocols, X.25 etc */ | |
152 | #define AF_HYLINK 15 /* NSC Hyperchannel */ | |
153 | #define AF_ISO 18 /* ISO protocols */ | |
f427ee49 | 154 | #define AF_VSOCK 40 /* VM Sockets */ |
9bccf70c A |
155 | .Ed |
156 | .Sh ROUTING | |
157 | Mac OS X provides some packet routing facilities. | |
158 | The kernel maintains a routing information database, which | |
159 | is used in selecting the appropriate network interface when | |
160 | transmitting packets. | |
161 | .Pp | |
162 | A user process (or possibly multiple co-operating processes) | |
163 | maintains this database by sending messages over a special kind | |
164 | of socket. | |
165 | This supplants fixed size | |
166 | .Xr ioctl 2 | |
167 | used in earlier releases. | |
168 | .Pp | |
169 | This facility is described in | |
170 | .Xr route 4 . | |
171 | .Sh INTERFACES | |
172 | Each network interface in a system corresponds to a | |
173 | path through which messages may be sent and received. A network | |
174 | interface usually has a hardware device associated with it, though | |
175 | certain interfaces such as the loopback interface, | |
176 | .Xr lo 4 , | |
177 | do not. | |
178 | .Pp | |
179 | The following | |
180 | .Xr ioctl | |
181 | calls may be used to manipulate network interfaces. | |
182 | The | |
183 | .Xr ioctl | |
184 | is made on a socket (typically of type | |
185 | .Dv SOCK_DGRAM ) | |
186 | in the desired domain. | |
187 | Most of the requests supported in earlier releases | |
188 | take an | |
189 | .Ar ifreq | |
190 | structure as its parameter. This structure has the form | |
191 | .Bd -literal | |
192 | struct ifreq { | |
193 | #define IFNAMSIZ 16 | |
194 | char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */ | |
195 | union { | |
196 | struct sockaddr ifru_addr; | |
197 | struct sockaddr ifru_dstaddr; | |
198 | struct sockaddr ifru_broadaddr; | |
199 | short ifru_flags; | |
200 | int ifru_metric; | |
201 | caddr_t ifru_data; | |
202 | } ifr_ifru; | |
203 | #define ifr_addr ifr_ifru.ifru_addr /* address */ | |
204 | #define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ | |
205 | #define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ | |
206 | #define ifr_flags ifr_ifru.ifru_flags /* flags */ | |
207 | #define ifr_metric ifr_ifru.ifru_metric /* metric */ | |
208 | #define ifr_data ifr_ifru.ifru_data /* for use by interface */ | |
209 | }; | |
210 | .Ed | |
211 | .Pp | |
212 | Calls which are now deprecated are: | |
213 | .Bl -tag -width SIOCGIFBRDADDR | |
214 | .It Dv SIOCSIFADDR | |
215 | Set interface address for protocol family. Following the address | |
216 | assignment, the ``initialization'' routine for | |
217 | the interface is called. | |
218 | .It Dv SIOCSIFDSTADDR | |
219 | Set point to point address for protocol family and interface. | |
220 | .It Dv SIOCSIFBRDADDR | |
221 | Set broadcast address for protocol family and interface. | |
222 | .El | |
223 | .Pp | |
224 | .Xr Ioctl | |
225 | requests to obtain addresses and requests both to set and | |
226 | retrieve other data are still fully supported | |
227 | and use the | |
228 | .Ar ifreq | |
229 | structure: | |
230 | .Bl -tag -width SIOCGIFBRDADDR | |
231 | .It Dv SIOCGIFADDR | |
232 | Get interface address for protocol family. | |
233 | .It Dv SIOCGIFDSTADDR | |
234 | Get point to point address for protocol family and interface. | |
235 | .It Dv SIOCGIFBRDADDR | |
236 | Get broadcast address for protocol family and interface. | |
237 | .It Dv SIOCSIFFLAGS | |
238 | Set interface flags field. If the interface is marked down, | |
239 | any processes currently routing packets through the interface | |
240 | are notified; | |
241 | some interfaces may be reset so that incoming packets are no longer received. | |
242 | When marked up again, the interface is reinitialized. | |
243 | .It Dv SIOCGIFFLAGS | |
244 | Get interface flags. | |
245 | .It Dv SIOCSIFMETRIC | |
246 | Set interface routing metric. | |
247 | The metric is used only by user-level routers. | |
248 | .It Dv SIOCGIFMETRIC | |
249 | Get interface metric. | |
250 | .El | |
251 | .Pp | |
f427ee49 | 252 | There are requests that make use of a different structure: |
9bccf70c A |
253 | .Bl -tag -width SIOCGIFBRDADDR |
254 | .It Dv SIOCAIFADDR | |
255 | An interface may have more than one address associated with it | |
256 | in some protocols. This request provides a means to | |
257 | add additional addresses (or modify characteristics of the | |
258 | primary address if the default address for the address family | |
259 | is specified). Rather than making separate calls to | |
260 | set destination or broadcast addresses, or network masks | |
261 | (now an integral feature of multiple protocols) | |
262 | a separate structure is used to specify all three facets simultaneously | |
263 | (see below). | |
264 | One would use a slightly tailored version of this struct specific | |
265 | to each family (replacing each sockaddr by one | |
266 | of the family-specific type). | |
267 | Where the sockaddr itself is larger than the | |
268 | default size, one needs to modify the | |
269 | .Xr ioctl | |
270 | identifier itself to include the total size, as described in | |
271 | .Xr ioctl . | |
272 | .It Dv SIOCDIFADDR | |
273 | This requests deletes the specified address from the list | |
f427ee49 A |
274 | associated with an interface. It uses the |
275 | .Ar ifreq | |
276 | structure for protocols like | |
277 | .Dv PF_INET | |
278 | whose | |
279 | address fit in the | |
280 | .Ar sockaddr | |
281 | structure. | |
282 | Protocols like | |
283 | .Dv PF_INET6 | |
284 | with addresses that do not fit in the | |
285 | .Ar sockaddr | |
286 | structure | |
287 | must have a variant of that request. | |
9bccf70c A |
288 | .It Dv SIOCGIFCONF |
289 | Get interface configuration list. This request takes an | |
290 | .Ar ifconf | |
291 | structure (see below) as a value-result parameter. The | |
292 | .Ar ifc_len | |
293 | field should be initially set to the size of the buffer | |
294 | pointed to by | |
295 | .Ar ifc_buf . | |
296 | On return it will contain the length, in bytes, of the | |
297 | configuration list. | |
298 | .El | |
299 | .Bd -literal | |
300 | /* | |
301 | * Structure used in SIOCAIFADDR request. | |
302 | */ | |
303 | struct ifaliasreq { | |
304 | char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */ | |
305 | struct sockaddr ifra_addr; | |
306 | struct sockaddr ifra_broadaddr; | |
307 | struct sockaddr ifra_mask; | |
308 | }; | |
309 | .Ed | |
310 | .Pp | |
311 | .Bd -literal | |
312 | /* | |
313 | * Structure used in SIOCGIFCONF request. | |
314 | * Used to retrieve interface configuration | |
315 | * for machine (useful for programs which | |
316 | * must know all networks accessible). | |
317 | */ | |
318 | struct ifconf { | |
319 | int ifc_len; /* size of associated buffer */ | |
320 | union { | |
321 | caddr_t ifcu_buf; | |
322 | struct ifreq *ifcu_req; | |
323 | } ifc_ifcu; | |
324 | #define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */ | |
325 | #define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */ | |
326 | }; | |
327 | .Ed | |
328 | .Sh SEE ALSO | |
9bccf70c | 329 | .Xr ioctl 2 , |
2d21ac55 | 330 | .Xr socket 2 , |
9bccf70c | 331 | .Xr intro 4 , |
2d21ac55 | 332 | .Xr config 5 , |
9bccf70c A |
333 | .Xr routed 8 |
334 | .Sh HISTORY | |
335 | The | |
336 | .Nm netintro | |
337 | manual appeared in | |
338 | .Bx 4.3 tahoe . |