diff options
Diffstat (limited to 'static/netbsd/man4/netintro.4 3.html')
| -rw-r--r-- | static/netbsd/man4/netintro.4 3.html | 279 |
1 files changed, 0 insertions, 279 deletions
diff --git a/static/netbsd/man4/netintro.4 3.html b/static/netbsd/man4/netintro.4 3.html deleted file mode 100644 index 29a96470..00000000 --- a/static/netbsd/man4/netintro.4 3.html +++ /dev/null @@ -1,279 +0,0 @@ -<table class="head"> - <tr> - <td class="head-ltitle">NETINTRO(4)</td> - <td class="head-vol">Device Drivers Manual</td> - <td class="head-rtitle">NETINTRO(4)</td> - </tr> -</table> -<div class="manual-text"> -<section class="Sh"> -<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1> -<p class="Pp"><code class="Nm">netintro</code> — - <span class="Nd">introduction to networking facilities</span></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1> -<p class="Pp"><code class="In">#include - <<a class="In">sys/types.h</a>></code> - <br/> - <code class="In">#include <<a class="In">sys/socket.h</a>></code> - <br/> - <code class="In">#include <<a class="In">net/route.h</a>></code> - <br/> - <code class="In">#include <<a class="In">net/if.h</a>></code></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1> -<p class="Pp">This section is a general introduction to the networking - facilities available in the system. Documentation in this part of section 4 - is broken up into three areas: <i class="Em">protocol families</i> - (domains), - <a class="permalink" href="#protocols"><i class="Em" id="protocols">protocols</i></a>, - and <a class="permalink" href="#network"><i class="Em" id="network">network - interfaces</i></a>.</p> -<p class="Pp">All network protocols are associated with a specific - <i class="Em">protocol family</i>. A protocol family provides basic services - to the protocol implementation to allow it to function within a specific - network environment. These services may include packet fragmentation and - reassembly, routing, addressing, and basic transport. A protocol family may - support multiple methods of addressing, though the current protocol - implementations do not. A protocol family normally comprises a number of - protocols, one per <a class="Xr">socket(2)</a> type. It is not required that - a protocol family support all socket types. A protocol family may contain - multiple protocols supporting the same socket abstraction.</p> -<p class="Pp">A protocol supports one of the socket abstractions detailed in - <a class="Xr">socket(2)</a>. A specific protocol may be accessed either by - creating a socket of the appropriate type and protocol family, or by - requesting the protocol explicitly when creating a socket. Protocols - normally accept only one type of address format, usually determined by the - addressing structure inherent in the design of the protocol family/network - architecture. Certain semantics of the basic socket abstractions are - protocol specific. All protocols are expected to support the basic model for - their particular socket type, but may, in addition, provide non-standard - facilities or extensions to a mechanism. For example, a protocol supporting - the <code class="Dv">SOCK_STREAM</code> abstraction may allow more than one - byte of out-of-band data to be transmitted per out-of-band message.</p> -<p class="Pp">A network interface is similar to a device interface. Network - interfaces comprise the lowest layer of the networking subsystem, - interacting with the actual transport hardware. An interface may support one - or more protocol families and/or address formats. The - <i class="Em">SYNOPSIS</i> section of each network interface entry gives a - sample specification of the related drivers for use in providing a system - description to the <a class="Xr">config(1)</a> program.</p> -<p class="Pp" id="DIAGNOSTICS">The - <a class="permalink" href="#DIAGNOSTICS"><i class="Em">DIAGNOSTICS</i></a> - section lists messages which may appear on the console and/or in the system - error log, <span class="Pa">/var/log/messages</span> (see - <a class="Xr">syslogd(8)</a>), due to errors in device operation.</p> -</section> -<section class="Sh"> -<h1 class="Sh" id="PROTOCOLS"><a class="permalink" href="#PROTOCOLS">PROTOCOLS</a></h1> -<p class="Pp">The system currently supports the Internet protocols. Raw socket - interfaces are provided to the IP protocol layer of the Internet. Consult - the appropriate manual pages in this section for more information regarding - the support for a protocol.</p> -</section> -<section class="Sh"> -<h1 class="Sh" id="ADDRESSING"><a class="permalink" href="#ADDRESSING">ADDRESSING</a></h1> -<p class="Pp">Associated with each protocol family is an address format. All - network address adhere to a general structure, called a sockaddr, described - below. However, each protocol imposes finer and more specific structure, - generally renaming the variant, which is discussed in the protocol family - manual page alluded to above.</p> -<div class="Bd Pp Bd-indent Li"> -<pre>struct sockaddr { - u_char sa_len; - u_char sa_family; - char sa_data[14]; -};</pre> -</div> -<p class="Pp">The field <var class="Ar">sa_len</var> contains the total length - of the of the structure, which may exceed 16 bytes. The following address - values for <var class="Ar">sa_family</var> are known to the system (and - additional formats are defined for possible future implementation):</p> -<div class="Bd Pp Li"> -<pre>#define AF_LOCAL 1 /* local to host */ -#define AF_INET 2 /* internetwork: UDP, TCP, etc. */ -#define AF_NS 6 /* Xerox NS protocols */ -#define AF_CCITT 10 /* CCITT protocols, X.25 etc */ -#define AF_HYLINK 15 /* NSC Hyperchannel */ -#define AF_INET6 24 /* internetwork, v6: UDP, TCP, etc. */</pre> -</div> -</section> -<section class="Sh"> -<h1 class="Sh" id="ROUTING"><a class="permalink" href="#ROUTING">ROUTING</a></h1> -<p class="Pp"><span class="Ux">UNIX</span> provides some packet routing - facilities. The kernel maintains a routing information database, which is - used in selecting the appropriate network interface when transmitting - packets.</p> -<p class="Pp">A user process (or possibly multiple co-operating processes) - maintains this database by sending messages over a special kind of socket. - This supplants fixed size <a class="Xr">ioctl(2)</a> used in earlier - releases.</p> -<p class="Pp">This facility is described in <a class="Xr">route(4)</a>.</p> -</section> -<section class="Sh"> -<h1 class="Sh" id="INTERFACES"><a class="permalink" href="#INTERFACES">INTERFACES</a></h1> -<p class="Pp">Each network interface in a system corresponds to a path through - which messages may be sent and received. A network interface usually has a - hardware device associated with it, though certain interfaces such as the - loopback interface, <a class="Xr">lo(4)</a>, do not.</p> -<p class="Pp">The following <a class="Xr">ioctl(2)</a> calls may be used to - manipulate network interfaces. The <a class="Xr">ioctl(2)</a> is made on a - socket (typically of type <code class="Dv">SOCK_DGRAM</code>) in the desired - domain. Most of the requests supported in earlier releases take an - <var class="Ar">ifreq</var> structure as its parameter. This structure has - the form</p> -<div class="Bd Pp Li"> -<pre>struct ifreq { -#define IFNAMSIZ 16 - char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */ - union { - struct sockaddr ifru_addr; - struct sockaddr ifru_dstaddr; - struct sockaddr ifru_broadaddr; - short ifru_flags; - int ifru_metric; - void *ifru_data; - } ifr_ifru; -#define ifr_addr ifr_ifru.ifru_addr /* address */ -#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ -#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ -#define ifr_space ifr_ifru.ifru_space /* sockaddr_storage */ -#define ifr_flags ifr_ifru.ifru_flags /* flags */ -#define ifr_metric ifr_ifru.ifru_metric /* metric */ -#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */ -#define ifr_dlt ifr_ifru.ifru_dlt /* data link type (DLT_*) */ -#define ifr_value ifr_ifru.ifru_value /* generic value */ -#define ifr_media ifr_ifru.ifru_metric /* media options (overload) */ -#define ifr_data ifr_ifru.ifru_data /* for use by interface */ -#define ifr_buf ifr_ifru.ifru_b.b_buf /* new interface ioctls */ -#define ifr_buflen ifr_ifru.ifru_b.b_buflen -#define ifr_index ifr_ifru.ifru_value /* interface index */ -};</pre> -</div> -<p class="Pp">Calls which are now deprecated are:</p> -<dl class="Bl-tag"> - <dt id="SIOCSIFADDR"><a class="permalink" href="#SIOCSIFADDR"><code class="Dv">SIOCSIFADDR</code></a></dt> - <dd>Set interface address for protocol family. Following the address - assignment, the ``initialization'' routine for the interface is - called.</dd> - <dt id="SIOCSIFDSTADDR"><a class="permalink" href="#SIOCSIFDSTADDR"><code class="Dv">SIOCSIFDSTADDR</code></a></dt> - <dd>Set point to point address for protocol family and interface.</dd> - <dt id="SIOCSIFBRDADDR"><a class="permalink" href="#SIOCSIFBRDADDR"><code class="Dv">SIOCSIFBRDADDR</code></a></dt> - <dd>Set broadcast address for protocol family and interface.</dd> -</dl> -<p class="Pp"><a class="Xr">ioctl(2)</a> requests to obtain addresses and - requests both to set and retrieve other data are still fully supported and - use the <var class="Ar">ifreq</var> structure:</p> -<dl class="Bl-tag"> - <dt id="SIOCGIFADDR"><a class="permalink" href="#SIOCGIFADDR"><code class="Dv">SIOCGIFADDR</code></a></dt> - <dd>Get interface address for protocol family.</dd> - <dt id="SIOCGIFDSTADDR"><a class="permalink" href="#SIOCGIFDSTADDR"><code class="Dv">SIOCGIFDSTADDR</code></a></dt> - <dd>Get point to point address for protocol family and interface.</dd> - <dt id="SIOCGIFBRDADDR"><a class="permalink" href="#SIOCGIFBRDADDR"><code class="Dv">SIOCGIFBRDADDR</code></a></dt> - <dd>Get broadcast address for protocol family and interface.</dd> - <dt id="SIOCSIFFLAGS"><a class="permalink" href="#SIOCSIFFLAGS"><code class="Dv">SIOCSIFFLAGS</code></a></dt> - <dd>Set interface flags field. If the interface is marked down, any processes - currently routing packets through the interface are notified; some - interfaces may be reset so that incoming packets are no longer received. - When marked up again, the interface is reinitialized.</dd> - <dt id="SIOCGIFFLAGS"><a class="permalink" href="#SIOCGIFFLAGS"><code class="Dv">SIOCGIFFLAGS</code></a></dt> - <dd>Get interface flags.</dd> - <dt id="SIOCSIFMETRIC"><a class="permalink" href="#SIOCSIFMETRIC"><code class="Dv">SIOCSIFMETRIC</code></a></dt> - <dd>Set interface routing metric. The metric is used only by user-level - routers.</dd> - <dt id="SIOCGIFMETRIC"><a class="permalink" href="#SIOCGIFMETRIC"><code class="Dv">SIOCGIFMETRIC</code></a></dt> - <dd>Get interface metric.</dd> - <dt id="SIOCGIFINDEX"><a class="permalink" href="#SIOCGIFINDEX"><code class="Dv">SIOCGIFINDEX</code></a></dt> - <dd>Get the interface index and populate ifr_index.</dd> -</dl> -<p class="Pp">There are two requests that make use of a new structure:</p> -<dl class="Bl-tag"> - <dt id="SIOCAIFADDR"><a class="permalink" href="#SIOCAIFADDR"><code class="Dv">SIOCAIFADDR</code></a></dt> - <dd>An interface may have more than one address associated with it in some - protocols. This request provides a means to add additional addresses (or - modify characteristics of the primary address if the default address for - the address family is specified). Rather than making separate calls to set - destination or broadcast addresses, or network masks (now an integral - feature of multiple protocols) a separate structure, - <var class="Ar">ifaliasreq</var>, is used to specify all three facets - simultaneously (see below). One would use a slightly tailored version of - this struct specific to each family (replacing each sockaddr by one of the - family-specific type). Where the sockaddr itself is larger than the - default size, one needs to modify the <a class="Xr">ioctl(2)</a> - identifier itself to include the total size, as described in - <a class="Xr">ioctl(2)</a>.</dd> - <dt id="SIOCDIFADDR"><a class="permalink" href="#SIOCDIFADDR"><code class="Dv">SIOCDIFADDR</code></a></dt> - <dd>This requests deletes the specified address from the list associated with - an interface. It also uses the <var class="Ar">ifaliasreq</var> structure - to allow for the possibility of protocols allowing multiple masks or - destination addresses, and also adopts the convention that specification - of the default address means to delete the first address for the interface - belonging to the address family in which the original socket was - opened.</dd> - <dt id="SIOCGIFALIAS"><a class="permalink" href="#SIOCGIFALIAS"><code class="Dv">SIOCGIFALIAS</code></a></dt> - <dd>This request provides means to get additional addresses together with - netmask and broadcast/destination from an interface. It also uses the - <var class="Ar">ifaliasreq</var> structure.</dd> -</dl> -<p class="Pp">Request making use of the <var class="Ar">ifconf</var> - structure:</p> -<dl class="Bl-tag"> - <dt id="SIOCGIFCONF"><a class="permalink" href="#SIOCGIFCONF"><code class="Dv">SIOCGIFCONF</code></a></dt> - <dd>Get interface configuration list. This request takes an - <var class="Ar">ifconf</var> structure (see below) as a value-result - parameter. The <var class="Ar">ifc_len</var> field should be initially set - to the size of the buffer pointed to by <var class="Ar">ifc_buf</var>. On - return it will contain the length, in bytes, of the configuration - list.</dd> -</dl> -<div class="Bd Pp Li"> -<pre>/* -* Structure used in SIOC[AD]IFADDR request. -*/ -struct ifaliasreq { - char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */ - struct sockaddr ifra_addr; - struct sockaddr ifra_dstaddr; -#define ifra_broadaddr ifra_dstaddr - struct sockaddr ifra_mask; -};</pre> -</div> -<div class="Bd Pp Li"> -<pre>/* -* Structure used in SIOCGIFCONF request. -* Used to retrieve interface configuration -* for machine (useful for programs which -* must know all networks accessible). -*/ -struct ifconf { - int ifc_len; /* size of associated buffer */ - union { - void *ifcu_buf; - struct ifreq *ifcu_req; - } ifc_ifcu; -#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */ -#define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */ -};</pre> -</div> -</section> -<section class="Sh"> -<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE - ALSO</a></h1> -<p class="Pp"><a class="Xr">config(1)</a>, <a class="Xr">ioctl(2)</a>, - <a class="Xr">socket(2)</a>, <a class="Xr">intro(4)</a>, - <a class="Xr">routed(8)</a></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1> -<p class="Pp">The <code class="Nm">netintro</code> manual appeared in - <span class="Ux">4.3BSD-Tahoe</span>.</p> -</section> -</div> -<table class="foot"> - <tr> - <td class="foot-date">August 2, 2018</td> - <td class="foot-os">NetBSD 10.1</td> - </tr> -</table> |
