]>
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 | |
140 | contains the total length of the of the structure, | |
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) */ | |
148 | #define AF_INET 2 /* internetwork: UDP, TCP, etc. */ | |
149 | #define AF_NS 6 /* Xerox NS protocols */ | |
150 | #define AF_CCITT 10 /* CCITT protocols, X.25 etc */ | |
151 | #define AF_HYLINK 15 /* NSC Hyperchannel */ | |
152 | #define AF_ISO 18 /* ISO protocols */ | |
153 | .Ed | |
154 | .Sh ROUTING | |
155 | Mac OS X provides some packet routing facilities. | |
156 | The kernel maintains a routing information database, which | |
157 | is used in selecting the appropriate network interface when | |
158 | transmitting packets. | |
159 | .Pp | |
160 | A user process (or possibly multiple co-operating processes) | |
161 | maintains this database by sending messages over a special kind | |
162 | of socket. | |
163 | This supplants fixed size | |
164 | .Xr ioctl 2 | |
165 | used in earlier releases. | |
166 | .Pp | |
167 | This facility is described in | |
168 | .Xr route 4 . | |
169 | .Sh INTERFACES | |
170 | Each network interface in a system corresponds to a | |
171 | path through which messages may be sent and received. A network | |
172 | interface usually has a hardware device associated with it, though | |
173 | certain interfaces such as the loopback interface, | |
174 | .Xr lo 4 , | |
175 | do not. | |
176 | .Pp | |
177 | The following | |
178 | .Xr ioctl | |
179 | calls may be used to manipulate network interfaces. | |
180 | The | |
181 | .Xr ioctl | |
182 | is made on a socket (typically of type | |
183 | .Dv SOCK_DGRAM ) | |
184 | in the desired domain. | |
185 | Most of the requests supported in earlier releases | |
186 | take an | |
187 | .Ar ifreq | |
188 | structure as its parameter. This structure has the form | |
189 | .Bd -literal | |
190 | struct ifreq { | |
191 | #define IFNAMSIZ 16 | |
192 | char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */ | |
193 | union { | |
194 | struct sockaddr ifru_addr; | |
195 | struct sockaddr ifru_dstaddr; | |
196 | struct sockaddr ifru_broadaddr; | |
197 | short ifru_flags; | |
198 | int ifru_metric; | |
199 | caddr_t ifru_data; | |
200 | } ifr_ifru; | |
201 | #define ifr_addr ifr_ifru.ifru_addr /* address */ | |
202 | #define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ | |
203 | #define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ | |
204 | #define ifr_flags ifr_ifru.ifru_flags /* flags */ | |
205 | #define ifr_metric ifr_ifru.ifru_metric /* metric */ | |
206 | #define ifr_data ifr_ifru.ifru_data /* for use by interface */ | |
207 | }; | |
208 | .Ed | |
209 | .Pp | |
210 | Calls which are now deprecated are: | |
211 | .Bl -tag -width SIOCGIFBRDADDR | |
212 | .It Dv SIOCSIFADDR | |
213 | Set interface address for protocol family. Following the address | |
214 | assignment, the ``initialization'' routine for | |
215 | the interface is called. | |
216 | .It Dv SIOCSIFDSTADDR | |
217 | Set point to point address for protocol family and interface. | |
218 | .It Dv SIOCSIFBRDADDR | |
219 | Set broadcast address for protocol family and interface. | |
220 | .El | |
221 | .Pp | |
222 | .Xr Ioctl | |
223 | requests to obtain addresses and requests both to set and | |
224 | retrieve other data are still fully supported | |
225 | and use the | |
226 | .Ar ifreq | |
227 | structure: | |
228 | .Bl -tag -width SIOCGIFBRDADDR | |
229 | .It Dv SIOCGIFADDR | |
230 | Get interface address for protocol family. | |
231 | .It Dv SIOCGIFDSTADDR | |
232 | Get point to point address for protocol family and interface. | |
233 | .It Dv SIOCGIFBRDADDR | |
234 | Get broadcast address for protocol family and interface. | |
235 | .It Dv SIOCSIFFLAGS | |
236 | Set interface flags field. If the interface is marked down, | |
237 | any processes currently routing packets through the interface | |
238 | are notified; | |
239 | some interfaces may be reset so that incoming packets are no longer received. | |
240 | When marked up again, the interface is reinitialized. | |
241 | .It Dv SIOCGIFFLAGS | |
242 | Get interface flags. | |
243 | .It Dv SIOCSIFMETRIC | |
244 | Set interface routing metric. | |
245 | The metric is used only by user-level routers. | |
246 | .It Dv SIOCGIFMETRIC | |
247 | Get interface metric. | |
248 | .El | |
249 | .Pp | |
250 | There are two requests that make use of a new structure: | |
251 | .Bl -tag -width SIOCGIFBRDADDR | |
252 | .It Dv SIOCAIFADDR | |
253 | An interface may have more than one address associated with it | |
254 | in some protocols. This request provides a means to | |
255 | add additional addresses (or modify characteristics of the | |
256 | primary address if the default address for the address family | |
257 | is specified). Rather than making separate calls to | |
258 | set destination or broadcast addresses, or network masks | |
259 | (now an integral feature of multiple protocols) | |
260 | a separate structure is used to specify all three facets simultaneously | |
261 | (see below). | |
262 | One would use a slightly tailored version of this struct specific | |
263 | to each family (replacing each sockaddr by one | |
264 | of the family-specific type). | |
265 | Where the sockaddr itself is larger than the | |
266 | default size, one needs to modify the | |
267 | .Xr ioctl | |
268 | identifier itself to include the total size, as described in | |
269 | .Xr ioctl . | |
270 | .It Dv SIOCDIFADDR | |
271 | This requests deletes the specified address from the list | |
272 | associated with an interface. It also uses the | |
273 | .Ar if_aliasreq | |
274 | structure to allow for the possibility of protocols allowing | |
275 | multiple masks or destination addresses, and also adopts the | |
276 | convention that specification of the default address means | |
277 | to delete the first address for the interface belonging to | |
278 | the address family in which the original socket was opened. | |
279 | .It Dv SIOCGIFCONF | |
280 | Get interface configuration list. This request takes an | |
281 | .Ar ifconf | |
282 | structure (see below) as a value-result parameter. The | |
283 | .Ar ifc_len | |
284 | field should be initially set to the size of the buffer | |
285 | pointed to by | |
286 | .Ar ifc_buf . | |
287 | On return it will contain the length, in bytes, of the | |
288 | configuration list. | |
289 | .El | |
290 | .Bd -literal | |
291 | /* | |
292 | * Structure used in SIOCAIFADDR request. | |
293 | */ | |
294 | struct ifaliasreq { | |
295 | char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */ | |
296 | struct sockaddr ifra_addr; | |
297 | struct sockaddr ifra_broadaddr; | |
298 | struct sockaddr ifra_mask; | |
299 | }; | |
300 | .Ed | |
301 | .Pp | |
302 | .Bd -literal | |
303 | /* | |
304 | * Structure used in SIOCGIFCONF request. | |
305 | * Used to retrieve interface configuration | |
306 | * for machine (useful for programs which | |
307 | * must know all networks accessible). | |
308 | */ | |
309 | struct ifconf { | |
310 | int ifc_len; /* size of associated buffer */ | |
311 | union { | |
312 | caddr_t ifcu_buf; | |
313 | struct ifreq *ifcu_req; | |
314 | } ifc_ifcu; | |
315 | #define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */ | |
316 | #define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */ | |
317 | }; | |
318 | .Ed | |
319 | .Sh SEE ALSO | |
320 | .Xr socket 2 , | |
321 | .Xr ioctl 2 , | |
322 | .Xr intro 4 , | |
323 | .Xr config 8 , | |
324 | .Xr routed 8 | |
325 | .Sh HISTORY | |
326 | The | |
327 | .Nm netintro | |
328 | manual appeared in | |
329 | .Bx 4.3 tahoe . |