xref: /freebsd/contrib/bsnmp/snmp_mibII/snmp_mibII.3 (revision 69292ced51ead153dd503de55de523c142faf9c4)
1f06ca4afSHartmut Brandt.\"
2f06ca4afSHartmut Brandt.\" Copyright (c) 2001-2003
3f06ca4afSHartmut Brandt.\"	Fraunhofer Institute for Open Communication Systems (FhG Fokus).
4f06ca4afSHartmut Brandt.\"	All rights reserved.
5f06ca4afSHartmut Brandt.\"
6f06ca4afSHartmut Brandt.\" Author: Harti Brandt <harti@freebsd.org>
7f06ca4afSHartmut Brandt.\"
8896052c1SHartmut Brandt.\" Redistribution and use in source and binary forms, with or without
9896052c1SHartmut Brandt.\" modification, are permitted provided that the following conditions
10896052c1SHartmut Brandt.\" are met:
11896052c1SHartmut Brandt.\" 1. Redistributions of source code must retain the above copyright
12896052c1SHartmut Brandt.\"    notice, this list of conditions and the following disclaimer.
13f06ca4afSHartmut Brandt.\" 2. Redistributions in binary form must reproduce the above copyright
14f06ca4afSHartmut Brandt.\"    notice, this list of conditions and the following disclaimer in the
15f06ca4afSHartmut Brandt.\"    documentation and/or other materials provided with the distribution.
16f06ca4afSHartmut Brandt.\"
17896052c1SHartmut Brandt.\" THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18896052c1SHartmut Brandt.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19896052c1SHartmut Brandt.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20896052c1SHartmut Brandt.\" ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
21896052c1SHartmut Brandt.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22896052c1SHartmut Brandt.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23896052c1SHartmut Brandt.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24896052c1SHartmut Brandt.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25896052c1SHartmut Brandt.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26896052c1SHartmut Brandt.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27896052c1SHartmut Brandt.\" SUCH DAMAGE.
28f06ca4afSHartmut Brandt.\"
2969292cedSHartmut Brandt.\" $Begemot: bsnmp/snmp_mibII/snmp_mibII.3,v 1.7 2005/05/23 09:11:21 brandt_h Exp $
30f06ca4afSHartmut Brandt.\"
3169292cedSHartmut Brandt.Dd May 23, 2005
3294caccb3SHartmut Brandt.Dt SNMP_MIBII 3
33f06ca4afSHartmut Brandt.Os
34f06ca4afSHartmut Brandt.Sh NAME
358eecd77aSHartmut Brandt.Nm mibII ,
36f06ca4afSHartmut Brandt.Nm mibif_notify_f ,
37f06ca4afSHartmut Brandt.Nm mib_netsock ,
38f06ca4afSHartmut Brandt.Nm mib_if_set_dyn ,
39f06ca4afSHartmut Brandt.Nm mib_refresh_iflist ,
40f06ca4afSHartmut Brandt.Nm mib_find_if ,
41f06ca4afSHartmut Brandt.Nm mib_find_if_sys ,
42f06ca4afSHartmut Brandt.Nm mib_find_if_name ,
43f06ca4afSHartmut Brandt.Nm mib_first_if ,
44f06ca4afSHartmut Brandt.Nm mib_next_if ,
45f06ca4afSHartmut Brandt.Nm mib_register_newif ,
46f06ca4afSHartmut Brandt.Nm mib_unregister_newif ,
47f06ca4afSHartmut Brandt.Nm mib_fetch_ifmib ,
48f06ca4afSHartmut Brandt.Nm mib_if_admin ,
49f06ca4afSHartmut Brandt.Nm mib_find_ifa ,
50f06ca4afSHartmut Brandt.Nm mib_first_ififa ,
51f06ca4afSHartmut Brandt.Nm mib_next_ififa ,
52f06ca4afSHartmut Brandt.Nm mib_ifstack_create ,
53f06ca4afSHartmut Brandt.Nm mib_ifstack_delete ,
54f06ca4afSHartmut Brandt.Nm mib_find_rcvaddr ,
55f06ca4afSHartmut Brandt.Nm mib_rcvaddr_create ,
56f06ca4afSHartmut Brandt.Nm mib_rcvaddr_delete ,
57f06ca4afSHartmut Brandt.Nm mibif_notify ,
58f06ca4afSHartmut Brandt.Nm mibif_unnotify
59f06ca4afSHartmut Brandt.Nd "mib-2 module for snmpd.
60f06ca4afSHartmut Brandt.Sh LIBRARY
618eecd77aSHartmut Brandt.Pq begemotSnmpdModulePath."mibII" = "@MODPATH@snmp_mibII.so"
62f06ca4afSHartmut Brandt.Sh SYNOPSIS
63f06ca4afSHartmut Brandt.In bsnmp/snmpmod.h
64f06ca4afSHartmut Brandt.In bsnmp/snmp_mibII.h
65f06ca4afSHartmut Brandt.Ft typedef void
66f06ca4afSHartmut Brandt.Fn (*mibif_notify_f) "struct mibif *ifp" "enum mibif_notify event" "void *uarg"
67f06ca4afSHartmut Brandt.Vt extern int mib_netsock ;
68f06ca4afSHartmut Brandt.Ft void
69f06ca4afSHartmut Brandt.Fn mib_if_set_dyn "const char *ifname"
70f06ca4afSHartmut Brandt.Ft void
71f06ca4afSHartmut Brandt.Fn mib_refresh_iflist "void"
72f06ca4afSHartmut Brandt.Ft struct mibif *
73f06ca4afSHartmut Brandt.Fn mib_find_if "u_int ifindex"
74f06ca4afSHartmut Brandt.Ft struct mibif *
75f06ca4afSHartmut Brandt.Fn mib_find_if_sys "u_int sysindex"
76f06ca4afSHartmut Brandt.Ft struct mibif *
77f06ca4afSHartmut Brandt.Fn mib_find_if_name "const char *ifname"
78f06ca4afSHartmut Brandt.Ft struct mibif *
79f06ca4afSHartmut Brandt.Fn mib_first_if "void"
80f06ca4afSHartmut Brandt.Ft struct mibif *
81f06ca4afSHartmut Brandt.Fn mib_next_if "const struct mibif *ifp"
82f06ca4afSHartmut Brandt.Ft int
83f06ca4afSHartmut Brandt.Fn mib_register_newif "int (*func)(struct mibif *)" "const struct lmodule *mod"
84f06ca4afSHartmut Brandt.Ft void
85f06ca4afSHartmut Brandt.Fn mib_unregister_newif "const struct lmodule *mod"
86f06ca4afSHartmut Brandt.Ft int
87f06ca4afSHartmut Brandt.Fn mib_fetch_ifmib "struct mibif *ifp"
88f06ca4afSHartmut Brandt.Ft int
89f06ca4afSHartmut Brandt.Fn mib_if_admin "struct mibif *ifp" "int up"
90f06ca4afSHartmut Brandt.Ft struct mibifa *
91f06ca4afSHartmut Brandt.Fn mib_find_ifa "struct in_addr ipa"
92f06ca4afSHartmut Brandt.Ft struct mibifa *
93f06ca4afSHartmut Brandt.Fn mib_first_ififa "const struct mibif *ifp"
94f06ca4afSHartmut Brandt.Ft struct mibifa *
95f06ca4afSHartmut Brandt.Fn mib_next_ififa "struct mibifa *ifa"
96f06ca4afSHartmut Brandt.Ft int
97f06ca4afSHartmut Brandt.Fn mib_ifstack_create "const struct mibif *lower" "const struct mibif *upper"
98f06ca4afSHartmut Brandt.Ft void
99f06ca4afSHartmut Brandt.Fn mib_ifstack_delete "const struct mibif *lower" "const struct mibif *upper"
100f06ca4afSHartmut Brandt.Ft struct mibrcvaddr *
101f06ca4afSHartmut Brandt.Fn mib_find_rcvaddr "u_int ifindex" "const u_char *addr" "size_t addrlen"
102f06ca4afSHartmut Brandt.Ft struct mibrcvaddr *
103f06ca4afSHartmut Brandt.Fn mib_rcvaddr_create "struct mibif *ifp" "const u_char *addr" "size_t addrlen"
104f06ca4afSHartmut Brandt.Ft void
105f06ca4afSHartmut Brandt.Fn mib_rcvaddr_delete "struct mibrcvaddr *addr"
106f06ca4afSHartmut Brandt.Ft void *
107f06ca4afSHartmut Brandt.Fn mibif_notify "struct mibif *ifp" "const struct lmodule *mod" "mibif_notify_f func" "void *uarg"
108f06ca4afSHartmut Brandt.Ft void
109f06ca4afSHartmut Brandt.Fn mibif_unnotify "void *reg"
110f06ca4afSHartmut Brandt.Sh DESCRIPTION
111f06ca4afSHartmut BrandtThe
112f06ca4afSHartmut Brandt.Nm snmp_mibII
113f06ca4afSHartmut Brandtmodule implements parts of the internet standard MIB-2. Most of the relevant
114f06ca4afSHartmut BrandtMIBs are implemented. Some of the tables are restricted to be read-only
115f06ca4afSHartmut Brandtinstead of read-write. The exact current implementation can be found in
1168eecd77aSHartmut Brandt.Pa @DEFPATH@mibII_tree.def .
117f06ca4afSHartmut BrandtThe module also exports a number of functions and global variables for use
118f06ca4afSHartmut Brandtby other modules, that need to handle network interfaces. This man page describes
119f06ca4afSHartmut Brandtthese functions.
120f06ca4afSHartmut Brandt.Ss DIRECT NETWORK ACCESS
121f06ca4afSHartmut BrandtThe
122f06ca4afSHartmut Brandt.Nm
123f06ca4afSHartmut Brandtmodule opens a socket that is used to execute all network related
124f06ca4afSHartmut Brandt.Xr ioctl 2
125f06ca4afSHartmut Brandtfunctions. This socket is globally available under the name
126f06ca4afSHartmut Brandt.Va mib_netsock .
127f06ca4afSHartmut Brandt.Ss NETWORK INTERFACES
128f06ca4afSHartmut BrandtThe
129f06ca4afSHartmut Brandt.Nm
130f06ca4afSHartmut Brandtmodule handles a list of all currently existing network interfaces. It allows
131f06ca4afSHartmut Brandtother modules to handle their own interface lists with special information
132f06ca4afSHartmut Brandtby providing a mechanism to register to events that change the interface list
133f06ca4afSHartmut Brandt(see below). The basic data structure is the interface structure:
134f06ca4afSHartmut Brandt.Bd -literal -offset indent
135f06ca4afSHartmut Brandtstruct mibif {
136f06ca4afSHartmut Brandt	TAILQ_ENTRY(mibif) link;
137f06ca4afSHartmut Brandt	u_int		flags;
138f06ca4afSHartmut Brandt	u_int		index;	/* logical ifindex */
139f06ca4afSHartmut Brandt	u_int		sysindex;
140f06ca4afSHartmut Brandt	char		name[IFNAMSIZ];
141f06ca4afSHartmut Brandt	char		descr[256];
142f06ca4afSHartmut Brandt	struct ifmibdata mib;
14369292cedSHartmut Brandt	uint64_t	mibtick;
144f06ca4afSHartmut Brandt	void		*specmib;
145f06ca4afSHartmut Brandt	size_t		specmiblen;
146f06ca4afSHartmut Brandt	u_char		*physaddr;
147f06ca4afSHartmut Brandt	u_int		physaddrlen;
148f06ca4afSHartmut Brandt	int		has_connector;
149f06ca4afSHartmut Brandt	int		trap_enable;
15069292cedSHartmut Brandt	uint64_t	counter_disc;
151f06ca4afSHartmut Brandt	mibif_notify_f	xnotify;
152f06ca4afSHartmut Brandt	void		*xnotify_data;
153f06ca4afSHartmut Brandt	const struct lmodule *xnotify_mod;
15494caccb3SHartmut Brandt	struct asn_oid	spec_oid;
155f06ca4afSHartmut Brandt};
156f06ca4afSHartmut Brandt.Ed
157f06ca4afSHartmut Brandt.Pp
158f06ca4afSHartmut BrandtThe
159f06ca4afSHartmut Brandt.Nm
160f06ca4afSHartmut Brandtmodule tries to implement the semantic if
161f06ca4afSHartmut Brandt.Va ifIndex
162f06ca4afSHartmut Brandtas described in RFC-2863. This RFC states, that an interface indexes may not
163f06ca4afSHartmut Brandtbe reused. That means, for example, if
164f06ca4afSHartmut Brandt.Pa tun
165f06ca4afSHartmut Brandtis a synthetic interface type and the system creates the interface
166f06ca4afSHartmut Brandt.Pa tun0 ,
167f06ca4afSHartmut Brandtdestroys this interfaces and again creates a
168f06ca4afSHartmut Brandt.Pa tun 0 ,
169f06ca4afSHartmut Brandtthen these interfaces must have different interface indexes, because in fact
170f06ca4afSHartmut Brandtthey are different interfaces. If, on the other hand, there is a hardware
171f06ca4afSHartmut Brandtinterface
172f06ca4afSHartmut Brandt.Pa xl0
173f06ca4afSHartmut Brandtand this interface disappears, because its driver is unloaded and appears
174f06ca4afSHartmut Brandtagain, because the driver is loaded again, the interface index must stay
175f06ca4afSHartmut Brandtthe same.
176f06ca4afSHartmut Brandt.Nm
177f06ca4afSHartmut Brandtimplements this by differentiating between real and synthetic (dynamic)
178f06ca4afSHartmut Brandtinterfaces. An interface type can be declared dynamic by calling the function
179f06ca4afSHartmut Brandt.Fn mib_if_set_dyn
180f06ca4afSHartmut Brandtwith the name if the interface type (for example
181f06ca4afSHartmut Brandt.Qq tun ).
182f06ca4afSHartmut BrandtFor real interfaces, the module keeps the mapping between the interface name
183f06ca4afSHartmut Brandtand its
184f06ca4afSHartmut Brandt.Va ifIndex
185f06ca4afSHartmut Brandtin a special list, if the interface is unloaded. For dynamic interfaces
186f06ca4afSHartmut Brandta new
187f06ca4afSHartmut Brandt.Va ifIndex
188f06ca4afSHartmut Brandtis generated each time the interface comes into existance. This
189f06ca4afSHartmut Brandtmeans, that the interface index as seen by SNMP is not the same index
190f06ca4afSHartmut Brandtas used by the system. The SNMP
191f06ca4afSHartmut Brandt.Va ifIndex
192f06ca4afSHartmut Brandtis held in field
193f06ca4afSHartmut Brandt.Va index ,
194f06ca4afSHartmut Brandtthe system's interface index is
195f06ca4afSHartmut Brandt.Va sysindex .
196f06ca4afSHartmut Brandt.Pp
197f06ca4afSHartmut BrandtA call to
198f06ca4afSHartmut Brandt.Nm mib_refresh_iflist
199f06ca4afSHartmut Brandtcauses the entire interface list to be re-created.
200f06ca4afSHartmut Brandt.Pp
201f06ca4afSHartmut BrandtThe interface list can be traversed with the functions
202f06ca4afSHartmut Brandt.Fn mib_first_if
203f06ca4afSHartmut Brandtand
204f06ca4afSHartmut Brandt.Fn mib_next_if .
205f06ca4afSHartmut BrandtBe sure not to change the interface list while traversing the list with
206f06ca4afSHartmut Brandtthese two calls.
207f06ca4afSHartmut Brandt.Pp
208f06ca4afSHartmut BrandtThere are three functions to find an interface by name or index.
209f06ca4afSHartmut Brandt.Fn mib_find_if
210f06ca4afSHartmut Brandtfinds an interface by searching for an SNMP
211f06ca4afSHartmut Brandt.Va ifIndex ,
212f06ca4afSHartmut Brandt.Fn mib_find_if_sys
213f06ca4afSHartmut Brandtfinds an interface by searching for a system interface index and
214f06ca4afSHartmut Brandt.Fn mib_find_if_name
215f06ca4afSHartmut Brandtfinds an interface by looking for an interface name. Each of the
216f06ca4afSHartmut Brandtfunction returns
217f06ca4afSHartmut Brandt.Li NULL
218f06ca4afSHartmut Brandtif the interface cannot be found.
219f06ca4afSHartmut Brandt.Pp
220f06ca4afSHartmut BrandtThe function
221f06ca4afSHartmut Brandt.Fn mib_fetch_ifmib
222f06ca4afSHartmut Brandtcauses the interface MIB to be refreshed from the kernel.
223f06ca4afSHartmut Brandt.Pp
224f06ca4afSHartmut BrandtThe function
225f06ca4afSHartmut Brandt.Fn mib_if_admin
226f06ca4afSHartmut Brandtcan be used to change the interface administrative state to up
227f06ca4afSHartmut Brandt(argument is 1) or down (argument is 0).
228f06ca4afSHartmut Brandt.Ss INTERFACE EVENTS
229f06ca4afSHartmut BrandtA module can register itself to receive a notification when a new entry is
230f06ca4afSHartmut Brandtcreated in the interface list. This is done by calling
231f06ca4afSHartmut Brandt.Fn mib_register_newif .
232f06ca4afSHartmut BrandtA module can register only one function, a second call to
233f06ca4afSHartmut Brandt.Fn mib_register_newif
234f06ca4afSHartmut Brandtcauses the registration to be overwritten. The registration can be removed
235f06ca4afSHartmut Brandtwith a call to
236f06ca4afSHartmut Brandt.Fn mib_unregister_newif .
237f06ca4afSHartmut BrandtIf is unregistered automatically, when the registering module is unloaded.
238f06ca4afSHartmut Brandt.Pp
239f06ca4afSHartmut BrandtA module can also register to events on a specific interface. This is done
240f06ca4afSHartmut Brandtby calling
241f06ca4afSHartmut Brandt.Fn mibif_notify .
242f06ca4afSHartmut BrandtThis causes the given callback
243f06ca4afSHartmut Brandt.Fa func
244f06ca4afSHartmut Brandtto be called with the interface pointer, a notification code and
245f06ca4afSHartmut Brandtthe user argument
246f06ca4afSHartmut Brandt.Fa uarg
247f06ca4afSHartmut Brandtwhen any of the following events occur:
248f06ca4afSHartmut Brandt.Bl -tag -width "XXXXX"
249f06ca4afSHartmut Brandt.It Li MIBIF_NOTIFY_DESTROY
250f06ca4afSHartmut BrandtThe interface is destroyed.
251f06ca4afSHartmut Brandt.El
252f06ca4afSHartmut Brandt.Pp
253f06ca4afSHartmut BrandtThis mechanism can be used to implement interface type specific MIB parts
254f06ca4afSHartmut Brandtin other modules. The registration can be removed with
255f06ca4afSHartmut Brandt.Fn mib_unnotify
256f06ca4afSHartmut Brandtwhich the return value from
257f06ca4afSHartmut Brandt.Fa mib_notify .
258f06ca4afSHartmut BrandtAny notification registration is removed automatically when the interface
259f06ca4afSHartmut Brandtis destroyed or the registering module is unloaded.
260f06ca4afSHartmut Brandt.Em Note that only one module can register to any given interface .
261f06ca4afSHartmut Brandt.Ss INTERFACE ADDRESSES
262f06ca4afSHartmut BrandtThe
263f06ca4afSHartmut Brandt.Nm
264f06ca4afSHartmut Brandtmodule handles a table of interface IP-addresses. These addresses are held
265f06ca4afSHartmut Brandtin a
266f06ca4afSHartmut Brandt.Bd -literal -offset indent
267f06ca4afSHartmut Brandtstruct mibifa {
268f06ca4afSHartmut Brandt	TAILQ_ENTRY(mibifa) link;
269f06ca4afSHartmut Brandt	struct in_addr	inaddr;
270f06ca4afSHartmut Brandt	struct in_addr	inmask;
271f06ca4afSHartmut Brandt	struct in_addr	inbcast;
272f06ca4afSHartmut Brandt	struct asn_oid	index;
273f06ca4afSHartmut Brandt	u_int		ifindex;
274f06ca4afSHartmut Brandt	u_int		flags;
275f06ca4afSHartmut Brandt};
276f06ca4afSHartmut Brandt.Ed
277f06ca4afSHartmut Brandt.Pp
278f06ca4afSHartmut BrandtThe (ordered) list of IP-addresses on a given interface can be traversed by
279f06ca4afSHartmut Brandtcalling
280f06ca4afSHartmut Brandt.Fn mib_first_ififa
281f06ca4afSHartmut Brandtand
282f06ca4afSHartmut Brandt.Fn mib_next_ififa .
283f06ca4afSHartmut BrandtThe list should not be considered read-only.
284f06ca4afSHartmut Brandt.Ss INTERFACE RECEIVE ADDRESSES
285f06ca4afSHartmut BrandtThe internet MIB-2 contains a table of interface receive addresses. These
286f06ca4afSHartmut Brandtaddresses are handled in:
287f06ca4afSHartmut Brandt.Bd -literal -offset indent
288f06ca4afSHartmut Brandtstruct mibrcvaddr {
289f06ca4afSHartmut Brandt	TAILQ_ENTRY(mibrcvaddr) link;
290f06ca4afSHartmut Brandt	struct asn_oid	index;
291f06ca4afSHartmut Brandt	u_int		ifindex;
292f06ca4afSHartmut Brandt	u_char		addr[ASN_MAXOIDLEN];
293f06ca4afSHartmut Brandt	size_t		addrlen;
294f06ca4afSHartmut Brandt	u_int		flags;
295f06ca4afSHartmut Brandt};
296f06ca4afSHartmut Brandtenum {
297f06ca4afSHartmut Brandt	MIBRCVADDR_VOLATILE	= 0x00000001,
298f06ca4afSHartmut Brandt	MIBRCVADDR_BCAST	= 0x00000002,
299f06ca4afSHartmut Brandt	MIBRCVADDR_HW		= 0x00000004,
300f06ca4afSHartmut Brandt};
301f06ca4afSHartmut Brandt.Ed
302f06ca4afSHartmut Brandt.Pp
303f06ca4afSHartmut BrandtNote, that the assignment of
304f06ca4afSHartmut Brandt.Li MIBRCVADDR_BCAST
305f06ca4afSHartmut Brandtis based on a list of known interface types. The flags should be handled
306f06ca4afSHartmut Brandtby modules inplementing interface type specific MIBs.
307f06ca4afSHartmut Brandt.Pp
308f06ca4afSHartmut BrandtA receive address can be created with
309f06ca4afSHartmut Brandt.Fn mib_rcvaddr_create
310f06ca4afSHartmut Brandtand deleted with
311f06ca4afSHartmut Brandt.Fn mib_rcvaddr_delete .
312f06ca4afSHartmut BrandtThis needs to be done only for addresses that are not automatically handled
313f06ca4afSHartmut Brandtby the system.
314f06ca4afSHartmut Brandt.Pp
315f06ca4afSHartmut BrandtA receive address can be found with
316f06ca4afSHartmut Brandt.Fn mib_find_rcvaddr .
317f06ca4afSHartmut Brandt.Ss INTERFACE STACK TABLE
318f06ca4afSHartmut BrandtThe
319f06ca4afSHartmut Brandt.Nm
320f06ca4afSHartmut Brandtmodule maintains also the interface stack table. Because for complex stacks,
321f06ca4afSHartmut Brandtthere is no system supported generic way of getting this information, interface
322f06ca4afSHartmut Brandttype specific modules need to help setting up stack entries. The
323f06ca4afSHartmut Brandt.Nm
324f06ca4afSHartmut Brandtmodule handles only the top and bottom entries.
325f06ca4afSHartmut Brandt.Pp
326f06ca4afSHartmut BrandtA table entry is created with
327f06ca4afSHartmut Brandt.Fn mib_ifstack_create
328f06ca4afSHartmut Brandtand deleted with
329f06ca4afSHartmut Brandt.Fn mib_ifstack_delete .
330f06ca4afSHartmut BrandtBoth functions need the pointers to the interfaces. Entries are automatically
331f06ca4afSHartmut Brandtdeleted if any of the interfaces of the entry is destroyed. The functions handle
332f06ca4afSHartmut Brandtboth the stack table and the reverse stack table.
333f06ca4afSHartmut Brandt.Sh FILES
3348eecd77aSHartmut Brandt.Bl -tag -width ".It Pa @DEFPATH@mibII_tree.def" -compact
3358eecd77aSHartmut Brandt.It Pa @DEFPATH@mibII_tree.def
336f06ca4afSHartmut BrandtThe description of the MIB tree implemented by
337f06ca4afSHartmut Brandt.Nm .
338f06ca4afSHartmut Brandt.It Pa /usr/local/share/snmp/mibs
3398eecd77aSHartmut Brandt.It Pa @MIBSPATH@
340f06ca4afSHartmut BrandtThe various internet MIBs.
34194caccb3SHartmut Brandt.El
342f06ca4afSHartmut Brandt.Sh SEE ALSO
34394caccb3SHartmut Brandt.Xr gensnmptree 1 ,
34494caccb3SHartmut Brandt.Xr snmpmod 3
345f06ca4afSHartmut Brandt.Sh STANDARDS
346f06ca4afSHartmut BrandtThis implementation conforms to the applicable IETF RFCs.
347f06ca4afSHartmut Brandt.Sh AUTHORS
3488eecd77aSHartmut Brandt.An Hartmut Brandt Aq harti@freebsd.org
349