summaryrefslogtreecommitdiff
path: root/static/netbsd/man4/netintro.4 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man4/netintro.4 3.html')
-rw-r--r--static/netbsd/man4/netintro.4 3.html279
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> &#x2014;
- <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
- &lt;<a class="In">sys/types.h</a>&gt;</code>
- <br/>
- <code class="In">#include &lt;<a class="In">sys/socket.h</a>&gt;</code>
- <br/>
- <code class="In">#include &lt;<a class="In">net/route.h</a>&gt;</code>
- <br/>
- <code class="In">#include &lt;<a class="In">net/if.h</a>&gt;</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. &quot;en0&quot; */
- 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. &quot;en0&quot; */
- 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>