summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/ifmib.4 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man4/ifmib.4 3.html')
-rw-r--r--static/freebsd/man4/ifmib.4 3.html139
1 files changed, 139 insertions, 0 deletions
diff --git a/static/freebsd/man4/ifmib.4 3.html b/static/freebsd/man4/ifmib.4 3.html
new file mode 100644
index 00000000..20d76a0a
--- /dev/null
+++ b/static/freebsd/man4/ifmib.4 3.html
@@ -0,0 +1,139 @@
+<table class="head">
+ <tr>
+ <td class="head-ltitle">IFMIB(4)</td>
+ <td class="head-vol">Device Drivers Manual</td>
+ <td class="head-rtitle">IFMIB(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">ifmib</code> &#x2014; <span class="Nd">Management
+ Information Base for network interfaces</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">sys/sysctl.h</a>&gt;</code>
+ <br/>
+ <code class="In">#include &lt;<a class="In">sys/time.h</a>&gt;</code>
+ <br/>
+ <code class="In">#include &lt;<a class="In">net/if.h</a>&gt;</code>
+ <br/>
+ <code class="In">#include &lt;<a class="In">net/if_mib.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">The <code class="Nm">ifmib</code> facility is an application of
+ the <a class="Xr">sysctl(3)</a> interface to provide management information
+ about network interfaces to client applications such as
+ <a class="Xr">netstat(1)</a>, <a class="Xr">slstat(8)</a>, and SNMP
+ management agents. This information is structured as a table, where each row
+ in the table represents a logical network interface (either a hardware
+ device or a software pseudo-device like <a class="Xr">lo(4)</a>). There are
+ two columns in the table, each containing a single structure: one column
+ contains generic information relevant to all interfaces, and the other
+ contains information specific to the particular class of interface.
+ (Generally the latter will implement the SNMP MIB defined for that
+ particular interface class, if one exists and can be implemented in the
+ kernel.)</p>
+<p class="Pp">The <code class="Nm">ifmib</code> facility is accessed via the
+ &#x201C;<code class="Li">net.link.generic</code>&#x201D; branch of the
+ <a class="Xr">sysctl(3)</a> MIB. The manifest constants for each level in
+ the <a class="Xr">sysctl(3)</a> <var class="Ar">name</var> are defined in
+ <code class="In">&lt;<a class="In">net/if_mib.h</a>&gt;</code>. The index of
+ the last row in the table is given by
+ &#x201C;<code class="Li">net.link.generic.system.ifcount</code>&#x201D; (or,
+ using the manifest constants, <code class="Dv">CTL_NET</code>,
+ <code class="Dv">PF_LINK</code>, <code class="Dv">NETLINK_GENERIC</code>,
+ <code class="Dv">IFMIB_SYSTEM</code>,
+ <code class="Dv">IFMIB_IFCOUNT</code>). A management application searching
+ for a particular interface should start with row 1 and continue through the
+ table row-by-row until the desired interface is found, or the interface
+ count is reached. Note that the table may be sparse, i.e., a given row may
+ not exist, indicated by an <var class="Va">errno</var> of
+ <code class="Er">ENOENT</code>. Such an error should be ignored, and the
+ next row should be checked.</p>
+<p class="Pp">The generic interface information, common to all interfaces, can
+ be accessed via the following procedure:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>int
+get_ifmib_general(int row, struct ifmibdata *ifmd)
+{
+ int name[6];
+ size_t len;
+
+ name[0] = CTL_NET;
+ name[1] = PF_LINK;
+ name[2] = NETLINK_GENERIC;
+ name[3] = IFMIB_IFDATA;
+ name[4] = row;
+ name[5] = IFDATA_GENERAL;
+
+ len = sizeof(*ifmd);
+
+ return sysctl(name, 6, ifmd, &amp;len, (void *)0, 0);
+}</pre>
+</div>
+<p class="Pp">The fields in <code class="Li">struct ifmibdata</code> are as
+ follows:</p>
+<dl class="Bl-tag">
+ <dt id="ifmd_name"><a class="permalink" href="#ifmd_name"><code class="Li">ifmd_name</code></a></dt>
+ <dd>(<code class="Li">char []</code>) the name of the interface, including the
+ unit number</dd>
+ <dt id="ifmd_pcount"><a class="permalink" href="#ifmd_pcount"><code class="Li">ifmd_pcount</code></a></dt>
+ <dd>(<code class="Li">int</code>) the number of promiscuous listeners</dd>
+ <dt id="ifmd_flags"><a class="permalink" href="#ifmd_flags"><code class="Li">ifmd_flags</code></a></dt>
+ <dd>(<code class="Li">int</code>) the interface's flags (defined in
+ <code class="In">&lt;<a class="In">net/if.h</a>&gt;</code>)</dd>
+ <dt id="ifmd_snd_len"><a class="permalink" href="#ifmd_snd_len"><code class="Li">ifmd_snd_len</code></a></dt>
+ <dd>(<code class="Li">int</code>) the current instantaneous length of the send
+ queue</dd>
+ <dt id="ifmd_snd_drops"><a class="permalink" href="#ifmd_snd_drops"><code class="Li">ifmd_snd_drops</code></a></dt>
+ <dd>(<code class="Li">int</code>) the number of packets dropped at this
+ interface because the send queue was full</dd>
+ <dt id="ifmd_data"><a class="permalink" href="#ifmd_data"><code class="Li">ifmd_data</code></a></dt>
+ <dd>(<code class="Li">struct if_data</code>) more information from a structure
+ defined in <code class="In">&lt;<a class="In">net/if.h</a>&gt;</code> (see
+ <a class="Xr">if_data(9)</a>)</dd>
+</dl>
+<p class="Pp">Class-specific information can be retrieved by examining the
+ <code class="Dv">IFDATA_LINKSPECIFIC</code> column instead. Note that the
+ form and length of the structure will depend on the class of interface. For
+ <code class="Dv">IFT_ETHER</code>, <code class="Dv">IFT_ISO88023</code>, and
+ <code class="Dv">IFT_STARLAN</code> interfaces, the structure is called
+ &#x201C;<code class="Li">struct ifmib_iso_8802_3</code>&#x201D; (defined in
+ <code class="In">&lt;<a class="In">net/if_mib.h</a>&gt;</code>), and
+ implements a superset of the RFC 1650 MIB for Ethernet-like networks.</p>
+</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">sysctl(3)</a>, <a class="Xr">intro(4)</a>,
+ <a class="Xr">ifnet(9)</a></p>
+<p class="Pp"><cite class="Rs"><span class="RsA">F. Kastenholz</span>,
+ <span class="RsT">Definitions of Managed Objects for the Ethernet-like
+ Interface Types Using SMIv2</span>, <span class="RsD">August 1994</span>,
+ <span class="RsO">RFC 1650</span>.</cite></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">ifmib</code> interface first appeared in
+ <span class="Ux">FreeBSD 2.2</span>.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
+<p class="Pp">Many Ethernet-like interfaces do not yet support the Ethernet MIB.
+ Regardless, all interfaces automatically support the generic MIB.</p>
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">December 26, 2020</td>
+ <td class="foot-os">FreeBSD 15.0</td>
+ </tr>
+</table>