diff options
Diffstat (limited to 'contrib/ngatm/snmp_atm')
-rw-r--r-- | contrib/ngatm/snmp_atm/BEGEMOT-ATM.txt | 301 | ||||
-rw-r--r-- | contrib/ngatm/snmp_atm/atm.h | 96 | ||||
-rw-r--r-- | contrib/ngatm/snmp_atm/atm_tree.def | 75 | ||||
-rw-r--r-- | contrib/ngatm/snmp_atm/snmp_atm.3 | 217 | ||||
-rw-r--r-- | contrib/ngatm/snmp_atm/snmp_atm.c | 622 | ||||
-rw-r--r-- | contrib/ngatm/snmp_atm/snmp_atm.h | 102 |
6 files changed, 0 insertions, 1413 deletions
diff --git a/contrib/ngatm/snmp_atm/BEGEMOT-ATM.txt b/contrib/ngatm/snmp_atm/BEGEMOT-ATM.txt deleted file mode 100644 index f6cca9615e2c..000000000000 --- a/contrib/ngatm/snmp_atm/BEGEMOT-ATM.txt +++ /dev/null @@ -1,301 +0,0 @@ --- --- Copyright (c) 2001-2002 --- Fraunhofer Institute for Open Communication Systems (FhG Fokus). --- All rights reserved. --- Copyright (c) 2004 --- Hartmut Brandt. --- All rights reserved. --- --- Author: Hartmut Brandt <harti@freebsd.org> --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions --- are met: --- 1. Redistributions of source code must retain the above copyright --- notice, this list of conditions and the following disclaimer. --- 2. Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND --- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE --- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE --- ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE --- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL --- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS --- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) --- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT --- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY --- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF --- SUCH DAMAGE. --- --- $Begemot: libunimsg/snmp_atm/BEGEMOT-ATM.txt,v 1.2 2004/08/06 14:50:26 brandt Exp $ --- --- Private Begemot MIB for ATM interfaces. --- -BEGEMOT-ATM-MIB DEFINITIONS ::= BEGIN - -IMPORTS - MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, TimeTicks - FROM SNMPv2-SMI - TEXTUAL-CONVENTION, DisplayString - FROM SNMPv2-TC - ifIndex - FROM IF-MIB - begemot - FROM BEGEMOT-MIB; - -begemotAtm MODULE-IDENTITY - LAST-UPDATED "200407190000Z" - ORGANIZATION "German Aerospace Centre" - CONTACT-INFO - " Hartmut Brandt - - Postal: German Aerospace Centre (DLR) - Institute of Communications and Navigation - 82234 Wessling - Germany - - Fax: +49 8153 28 2844 - - E-mail: harti@freebsd.org" - DESCRIPTION - "The Begemot MIB for ATM interfaces." - - ::= { begemot 101 } - -begemotAtmObjects OBJECT IDENTIFIER ::= { begemotAtm 1 } - --- -------------------------------------------------------------------------- - -AtmESI ::= TEXTUAL-CONVENTION - DISPLAY-HINT "1x:" - STATUS current - DESCRIPTION - "An ATM End System Identifier. This is basically the same as - an Ethernet Address and is assigned using the same rules." - SYNTAX OCTET STRING (SIZE(6)) - --- -------------------------------------------------------------------------- - --- --- Interfaces table --- -begemotAtmIfTable OBJECT-TYPE - SYNTAX SEQUENCE OF BegemotAtmIfEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "This table contains an entry for each hardware ATM - interface. The table is indexed by the interface index." - ::= { begemotAtmObjects 1 } - -begemotAtmIfEntry OBJECT-TYPE - SYNTAX BegemotAtmIfEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "This is a table entry describing one ATM hardware interface." - INDEX { ifIndex } - ::= { begemotAtmIfTable 1 } - -BegemotAtmIfEntry ::= SEQUENCE { - begemotAtmIfName DisplayString, - begemotAtmIfPcr Unsigned32, - begemotAtmIfMedia INTEGER, - begemotAtmIfVpiBits Unsigned32, - begemotAtmIfVciBits Unsigned32, - begemotAtmIfMaxVpcs Unsigned32, - begemotAtmIfMaxVccs Unsigned32, - begemotAtmIfEsi AtmESI, - begemotAtmIfCarrierStatus INTEGER, - begemotAtmIfMode INTEGER -} - -begemotAtmIfName OBJECT-TYPE - SYNTAX DisplayString (SIZE(1..15)) - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Name of the ATM interface." - ::= { begemotAtmIfEntry 1 } - -begemotAtmIfPcr OBJECT-TYPE - SYNTAX Unsigned32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The line cell rate of the interface." - ::= { begemotAtmIfEntry 2 } - -begemotAtmIfMedia OBJECT-TYPE - SYNTAX INTEGER { - other(1), - unknown(3), - utp25(4), - taxi100(5), - taxi140(6), - mm155(7), - sm155(8), - utp155(9), - mm622(10), - sm622(11), - virtual(12) - } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The physical medium." - ::= { begemotAtmIfEntry 3 } - -begemotAtmIfVpiBits OBJECT-TYPE - SYNTAX Unsigned32 (0..12) - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Number of VPI bits that are used by the device." - ::= { begemotAtmIfEntry 4 } - -begemotAtmIfVciBits OBJECT-TYPE - SYNTAX Unsigned32 (0..16) - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "Number of VCI bits that are used by the device." - ::= { begemotAtmIfEntry 5 } - -begemotAtmIfMaxVpcs OBJECT-TYPE - SYNTAX Unsigned32 (0..256) - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The maximum number of VPC supported on this device. This may not - be larger than 2^begemotAtmIfVpiBits." - ::= { begemotAtmIfEntry 6 } - -begemotAtmIfMaxVccs OBJECT-TYPE - SYNTAX Unsigned32 (0..16777216) - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The maximum number of VCC supported on this device. This may not - be larger than 2^(begemotAtmIfVpiBits + begemotAtmVciBits)." - ::= { begemotAtmIfEntry 7 } - -begemotAtmIfEsi OBJECT-TYPE - SYNTAX AtmESI - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The default End System Identifier as reported by the hardware. - If the hardware has no ESI all six bytes are reported as 0." - ::= { begemotAtmIfEntry 8 } - -begemotAtmIfCarrierStatus OBJECT-TYPE - SYNTAX INTEGER { carrierOn(1), carrierOff(2), unknown(3), none(4) } - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The state of the carrier. For interfaces which don't have the - notion of a carriere none is reported." - ::= { begemotAtmIfEntry 9 } - -begemotAtmIfMode OBJECT-TYPE - SYNTAX INTEGER { sonet(1), sdh(2), unknown(3) } - MAX-ACCESS read-write - STATUS current - DESCRIPTION - "The mode of the SUNI interface. For interfaces without SUNI - unknown is reported in which case the variable is read-only. - Some types of interfaces may not be able to change this value." - ::= { begemotAtmIfEntry 10 } - -begemotAtmIfTableLastChange OBJECT-TYPE - SYNTAX TimeTicks - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The value of sysUpTime the last time that an entry in - begemotIfTable was created or destroyed. If the table is - unchanged since the last coldStart this value is zero." - ::= { begemotAtmObjects 2 } - --- --- Interface hardware table --- -begemotAtmHWTable OBJECT-TYPE - SYNTAX SEQUENCE OF BegemotAtmHWEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "This table augments the begemotAtmIfTable and contains an entry - for each hardware ATM interface. The entries describe the - ATM hardware interface." - ::= { begemotAtmObjects 3 } - -begemotAtmHWEntry OBJECT-TYPE - SYNTAX BegemotAtmHWEntry - MAX-ACCESS not-accessible - STATUS current - DESCRIPTION - "This is a table entry describing one ATM hardware interface." - AUGMENTS { begemotAtmIfEntry } - ::= { begemotAtmHWTable 1 } - -BegemotAtmHWEntry ::= SEQUENCE { - begemotAtmHWVendor DisplayString, - begemotAtmHWDevice DisplayString, - begemotAtmHWSerial Unsigned32, - begemotAtmHWVersion Unsigned32, - begemotAtmHWSoftVersion Unsigned32 -} - -begemotAtmHWVendor OBJECT-TYPE - SYNTAX DisplayString - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "A short string naming the vendor of the interface card." - ::= { begemotAtmHWEntry 1 } - -begemotAtmHWDevice OBJECT-TYPE - SYNTAX DisplayString - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "A short string naming the brand of the interface card." - ::= { begemotAtmHWEntry 2 } - -begemotAtmHWSerial OBJECT-TYPE - SYNTAX Unsigned32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The serial number of the interface card or 0 if it doesn't - report a serial number." - ::= { begemotAtmHWEntry 3 } - -begemotAtmHWVersion OBJECT-TYPE - SYNTAX Unsigned32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The hardware version of the interface card or 0 if it doesn't - report a hardware version number." - ::= { begemotAtmHWEntry 4 } - -begemotAtmHWSoftVersion OBJECT-TYPE - SYNTAX Unsigned32 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The firmware version of the interface card or 0 if it doesn't - report a firmware version number." - ::= { begemotAtmHWEntry 5 } - --- -------------------------------------------------------------------- - --- System specific parts -begemotAtmSysGroup OBJECT IDENTIFIER ::= { begemotAtmObjects 4 } - -END diff --git a/contrib/ngatm/snmp_atm/atm.h b/contrib/ngatm/snmp_atm/atm.h deleted file mode 100644 index 0df6f7e3eaec..000000000000 --- a/contrib/ngatm/snmp_atm/atm.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2004 - * Deutsches Zentrum fuer Luft- und Raumfahrt. - * All rights reserved. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Begemot: libunimsg/snmp_atm/atm.h,v 1.2 2004/08/11 07:55:22 brandt Exp $ - */ - -#include <sys/types.h> -#include <sys/queue.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <net/if_mib.h> - -#include <bsnmp/snmpmod.h> -#include <bsnmp/snmp_mibII.h> -#include "snmp_atm.h" - -/* - * Event registrations - */ -struct atmif_reg { - TAILQ_ENTRY(atmif_reg) link; - void *data; - atmif_event_f func; - const struct lmodule *mod; - struct atmif_priv *aif; /* back pointer */ -}; -TAILQ_HEAD(atmif_reg_list, atmif_reg); - -/* - * Interface data - */ -struct atmif_priv { - struct atmif pub; /* public part, must be first */ - TAILQ_ENTRY(atmif_priv) link; - u_int index; /* if_index */ - void *ifpreg; - struct atmif_sys *sys; - struct atmif_reg_list notify; -}; -TAILQ_HEAD(atmif_list, atmif_priv); - -/* list of all (known) ATM interfaces */ -extern struct atmif_list atmif_list; - -extern struct lmodule *module; - -/* Check the carrier state of the interface */ -void atmif_check_carrier(struct atmif_priv *); - -/* Send notification to all listeners. */ -void atmif_send_notification(struct atmif_priv *, enum atmif_notify, uintptr_t); - -/* Get the interface point for a table access */ -int atmif_get_aif(struct snmp_value *, u_int, enum snmp_op, - struct atmif_priv **); - -/* Destroy system dependend stuff. */ -void atmif_sys_destroy(struct atmif_priv *); - -/* Attach to an ATM interface */ -int atmif_sys_attach_if(struct atmif_priv *); - -/* Get vendor string */ -int atm_sys_get_hw_vendor(struct atmif_priv *, struct snmp_value *); - -/* Get device string */ -int atm_sys_get_hw_device(struct atmif_priv *, struct snmp_value *); - -/* Extract the ATM MIB from the interface's private MIB */ -void atmif_sys_fill_mib(struct atmif_priv *); diff --git a/contrib/ngatm/snmp_atm/atm_tree.def b/contrib/ngatm/snmp_atm/atm_tree.def deleted file mode 100644 index ac70b0e7ee22..000000000000 --- a/contrib/ngatm/snmp_atm/atm_tree.def +++ /dev/null @@ -1,75 +0,0 @@ -# -# Copyright (c) 2000-2003 -# Fraunhofer Institut for Open Communication Systems (FOKUS). -# All rights reserved. -# Copyright (c) 2004 -# Hartmut Brandt. -# All rights reserved. -# -# Author: Hartmut Brandt <harti@freebsd.org> -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# $Begemot: libunimsg/snmp_atm/atm_tree.def,v 1.3 2004/08/06 14:50:27 brandt Exp $ -# -# SNMP module for ATM hardware interfaces. -# -# $Begemot: libunimsg/snmp_atm/atm_tree.def,v 1.3 2004/08/06 14:50:27 brandt Exp $ -# -(1 internet - (4 private - (1 enterprises - (12325 fokus - (1 begemot - (101 begemotAtm - (1 begemotAtmObjects - (1 begemotAtmIfTable - (1 begemotAtmIfEntry : INTEGER op_atmif - (1 begemotAtmIfName OCTETSTRING GET) - (2 begemotAtmIfPcr UNSIGNED32 GET) - (3 begemotAtmIfMedia INTEGER GET) - (4 begemotAtmIfVpiBits UNSIGNED32 GET) - (5 begemotAtmIfVciBits UNSIGNED32 GET) - (6 begemotAtmIfMaxVpcs UNSIGNED32 GET) - (7 begemotAtmIfMaxVccs UNSIGNED32 GET) - (8 begemotAtmIfEsi OCTETSTRING GET) - (9 begemotAtmIfCarrierStatus INTEGER GET) - (10 begemotAtmIfMode INTEGER GET SET) - )) - (2 begemotAtmIfTableLastChange TIMETICKS op_atm GET) - (3 begemotAtmHWTable - (1 begemotAtmHWEntry : INTEGER op_atmhw - (1 begemotAtmHWVendor OCTETSTRING GET) - (2 begemotAtmHWDevice OCTETSTRING GET) - (3 begemotAtmHWSerial UNSIGNED32 GET) - (4 begemotAtmHWVersion UNSIGNED32 GET) - (5 begemotAtmHWSoftVersion UNSIGNED32 GET) - )) - (4 begemotAtmSysGroup - (1 begemotAtmFreeBSDGroup - ) - ) - ) - )) - ) - ) -)) diff --git a/contrib/ngatm/snmp_atm/snmp_atm.3 b/contrib/ngatm/snmp_atm/snmp_atm.3 deleted file mode 100644 index 7fe2f4663975..000000000000 --- a/contrib/ngatm/snmp_atm/snmp_atm.3 +++ /dev/null @@ -1,217 +0,0 @@ -.\" -.\" Copyright (c) 2001-2002 -.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). -.\" All rights reserved. -.\" Copyright (c) 2003-2004 -.\" Hartmut Brandt. -.\" All rights reserved. -.\" -.\" Author: Hartmut Brandt <harti@freebsd.org> -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" $Begemot: libunimsg/snmp_atm/snmp_atm.3,v 1.1 2004/07/20 16:30:03 brandt Exp $ -.\" -.Dd July 20, 2004 -.Dt snmp_atm 3 -.Os -.Sh NAME -.Nm atmif_event_f , -.Nm atm_find_if_name , -.Nm atm_find_if , -.Nm atm_notify_aif , -.Nm atm_unnotify_aif -.Nd "ATM driver module for snmpd. -.Sh LIBRARY -.Pq begemotSnmpdModulePath."netgraph" = "@MODPATH@snmp_netgraph.so" (FreeBSD) -.Pq begemotSnmpdModulePath."mibII" = "@MODPATH@snmp_mibII.so" -.Pq begemotSnmpdModulePath."atm" = "@MODPATH@snmp_atm.so" -.Sh SYNOPSIS -.In bsnmp/snmpmod.h -.In bsnmp/snmp_mibII.h -.In bsnmp/snmp_atm.h -.Ft typedef void -.Fn (*atmif_event_f) "struct atmif *aif" "enum atmif_notify event" "uintptr_t data" "void *uarg" -.Ft struct atmif * -.Fn atm_find_if_name "const char *name" -.Ft struct atmif * -.Fn atm_find_if "u_int ifindex" -.Ft void * -.Fn atm_notify_aif "struct atmif *aif" "const struct lmodule *mod" "atmif_event_f func" "void *uarg" -.Ft void -.Fn atm_unnotify_aif "void *not" -.Sh DESCRIPTION -The -.Nm snmp_atm -module implements a number of tables and scalars that enable remote access to -the ATM devices in the system. It also exports a number of -functions, that allow other modules to easily access ATM devices. -.Pp -The module maintains an extension to the interface structure exported by -.Xr snmp_mibII 3 -for all ATM devices. This structure has the following fields: -.Bd -literal -offset indent -struct atmif { - struct mibif *ifp; /* common interface data */ - struct atmif_mib *mib; /* ATM MIB */ - enum atmif_carrier_state carrier; - enum atmif_suni_mode mode; /* SUNI mode SDH or SONET */ -}; -.Ed -.Pp -The fields have the following meaning: -.Bl -tag -width XXX -.It Fa ifp -The field points to the -.Xr snmp_mibII 3 -interface structure. -.It Fa mib -The special ATM interface MIB (see below). -.It Fa carrier -The current state of the carrier. One of the following: -.Bl -tag -width XXX -.It Dv ATMIF_CARRIER_ON -carrier detected, -.It Dv ATMIF_CARRIER_OFF -no carrier, -.It Dv ATMIF_CARRIER_UNKNOWN -the state of the carrier is unknown, -.It Dv ATMIF_CARRIER_NONE -the device has no notion of carrier or is not able to sense it. -.El -.It Fa mode -For ATM devices with a SUNI chip this is the current mode of the interface: -.Bl -tag -width XXX -.It Dv ATMIF_SUNI_MODE_SONET -The interface is in SONET mode. -.It Dv ATMIF_SUNI_MODE_SDH -The interface is in SDH mode. -.It Dv ATMIF_SUNI_MODE_UNKNOWN -The interface either has no SUNI interface or the mode is unknown (for example, -interface is down). -.El -.El -.Pp -An ATM interface can be found by name or by SNMP interface index (see -.Xr snmp_mibII 3 -for a discussion of interface indexes). -The function -.Fn atm_find_if_name -searches an interface given a name. -The function -.Fn atm_find_if -searches an interface by its interface index. -Both functions return NULL if an interface cannot be found. -.Pp -The ATM MIB contains the following fields: -.Bd -literal -offset indent -struct atmif_mib { - u_int version; /* currently 0 */ - - u_int device; /* type of hardware (system specific) */ - u_int serial; /* card serial number (device specific) */ - u_int hw_version; /* card version (device specific) */ - u_int sw_version; /* firmware version (device specific) */ - u_int media; /* physical media (see MIB) */ - - u_char esi[6]; /* end system identifier (MAC) */ - u_int pcr; /* supported peak cell rate */ - u_int vpi_bits; /* number of used bits in VPI field */ - u_int vci_bits; /* number of used bits in VCI field */ - u_int max_vpcs; /* maximum number of VPCs */ - u_int max_vccs; /* maximum number of VCCs */ -}; -.Ed -.Ss NOTIFICATIONS -An other module can register with -.Nm -to receive notifications when certain events happen on the ATM interface. -The registration is done with -.Fn atm_notify_aif -which takes a pointer to the interface, the calling module pointer, a callback -function and a user argument that is passed to the callback function. -The callback function is called with the interface pointer, a notification -code, a notification argument and the user argument. The following -notifications are defined: -.Bl -tag -width XXX -.It Dv ATMIF_NOTIFY_DESTROY -The interface is destroyed. The notification argument is not used. -.It Dv ATMIF_NOTIFY_CARRIER -The carrier state on the interface has changed. The argument is the -.Em old -state of the carrier. The new state can be obtained from the interface -structure. -.It Dv ATMIF_NOTIFY_VCC -A permanent VCC has been created or destroyed. The argument is an u_int that -can be decoded as follows: -.Bd -literal -offset indent -vpi = (arg >> 24) & 0xff; -vci = (arg >> 8) & 0xffff; -state = arg & 1; -.Ed -.Pp -.Va state -is 0 if the VCC was destroyed and 1 if it was created. -.El -The registration for notification can be undone by passing the return -value from -.Fn atm_notify_aif -to -.Fn atm_unnotify_aif . -The registrations is automatically removed if the interface is destroyed. -.Ss MIB -The MIB implemented by the module is defined in -.Pa BEGEMOT-ATM.txt . -In the generic part there are two tables and one scalar, there is also -a system specific group: -.Bl -tag -width XXX -.It Va begemotAtmIfTable -This table is an extension of -.Va ifTable . -It contains a row for each ATM interface and is index with -.Va ifIndex . -All fields are read-only except the -.Va begemotAtmIfMode -column. -.It Va begemotAtmIfTableLastChange -Contains the tick when a row was created or destroyed in the above table or -0, if the table did not change since start of the SNMP agent. -.It Va begemotAtmHWTable -Is also indexed by -.Va ifIndex -and contains hardware specific information. This table is read-only. -.El -.Sh FILES -.Bl -tag -width "XXXXXXXXX" -.It Pa @DEFPATH@atm_tree.def -The description of the MIB tree implemented by -.Nm . -.It Pa @MIBSPATH@BEGEMOT-ATM.txt -This is the MIB that is implemented by this module. -.Sh SEE ALSO -.Xr bsnmpd 1 , -.Xr snmpmod 3 , -.Xr snmp_mibII 3 , -.Xr snmp_netgraph 3 , -.Xr gensnmptree 1 -.Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org diff --git a/contrib/ngatm/snmp_atm/snmp_atm.c b/contrib/ngatm/snmp_atm/snmp_atm.c deleted file mode 100644 index 1106e8a237be..000000000000 --- a/contrib/ngatm/snmp_atm/snmp_atm.c +++ /dev/null @@ -1,622 +0,0 @@ -/* - * Copyright (c) 2001-2002 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * Copyright (c) 2003-2004 - * Hartmut Brandt. - * All rights reserved. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Begemot: libunimsg/snmp_atm/snmp_atm.c,v 1.2 2004/08/06 17:30:40 brandt Exp $ - * - * SNMP module for ATM hardware interfaces. - */ - -#include "atm.h" -#include "atm_tree.h" -#include "atm_oid.h" - -#include <sys/ioctl.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <errno.h> -#include <syslog.h> -#include <net/if_types.h> -#include <net/if_media.h> -#include <net/if_atm.h> - -struct lmodule *module; - -/* list of all (known) ATM interfaces */ -struct atmif_list atmif_list = TAILQ_HEAD_INITIALIZER(atmif_list); - -/* whether we are started or not */ -static int started; - -/* last time table was changed */ -static uint32_t last_change; - -/* for the registration */ -static const struct asn_oid oid_begemotAtm = OIDX_begemotAtm; - -/* the registration */ -static u_int reg_atm; - -/* - * Find an ATM interface by name - */ -struct atmif * -atm_find_if_name(const char *name) -{ - struct atmif_priv *aif; - - TAILQ_FOREACH(aif, &atmif_list, link) - if (strcmp(aif->pub.ifp->name, name) == 0) - return (&aif->pub); - return (NULL); -} - -/* - * get the interface from the interface index - */ -struct atmif * -atm_find_if(u_int ifindex) -{ - struct atmif_priv *aif; - - TAILQ_FOREACH(aif, &atmif_list, link) - if (aif->index == ifindex) - return (&aif->pub); - return (NULL); -} - -/* - * Send notification to all listeners. - */ -void -atmif_send_notification(struct atmif_priv *aif, enum atmif_notify code, - uintptr_t arg) -{ - struct atmif_reg *r0, *r1; - - r0 = TAILQ_FIRST(&aif->notify); - while (r0 != NULL) { - r1 = TAILQ_NEXT(r0, link); - r0->func(&aif->pub, code, arg, r0->data); - r0 = r1; - } -} - -/* - * Destroy an interface - */ -static void -atmif_destroy(struct atmif_priv *aif) -{ - struct atmif_reg *r0; - - atmif_send_notification(aif, ATMIF_NOTIFY_DESTROY, - (uintptr_t)0); - - atmif_sys_destroy(aif); - - if (aif->ifpreg != NULL) - mibif_unnotify(aif->ifpreg); - - while ((r0 = TAILQ_FIRST(&aif->notify)) != NULL) { - TAILQ_REMOVE(&aif->notify, r0, link); - free(r0); - } - - TAILQ_REMOVE(&atmif_list, aif, link); - free(aif); - - last_change = this_tick; -} - -/* - * Function gets called from the MIB-II module for events on that interface - */ -static void -atmif_notify(struct mibif *ifp __unused, enum mibif_notify event, void *data) -{ - struct atmif_priv *aif = data; - - switch (event) { - - case MIBIF_NOTIFY_DESTROY: - atmif_destroy(aif); - break; - } -} - -/* - * Check the carrier state of the interface - */ -void -atmif_check_carrier(struct atmif_priv *aif) -{ - struct ifmediareq ifmr; - enum atmif_carrier_state ost = aif->pub.carrier; - - memset(&ifmr, 0, sizeof(ifmr)); - strcpy(ifmr.ifm_name, aif->pub.ifp->name); - - if (ioctl(mib_netsock, SIOCGIFMEDIA, &ifmr) == -1) { - aif->pub.carrier = ATMIF_CARRIER_UNKNOWN; - return; - } - if (!ifmr.ifm_status & IFM_AVALID) { - aif->pub.carrier = ATMIF_CARRIER_UNKNOWN; - return; - } - if (ifmr.ifm_status & IFM_ACTIVE) - aif->pub.carrier = ATMIF_CARRIER_ON; - else - aif->pub.carrier = ATMIF_CARRIER_OFF; - - if (ost != aif->pub.carrier) - atmif_send_notification(aif, ATMIF_NOTIFY_CARRIER, - (uintptr_t)ost); -} - -/* - * Retrieve the SUNI mode - */ -static int -atmif_get_mode(struct atmif_priv *aif) -{ - struct ifmediareq ifmr; - - memset(&ifmr, 0, sizeof(ifmr)); - strcpy(ifmr.ifm_name, aif->pub.ifp->name); - - if (ioctl(mib_netsock, SIOCGIFMEDIA, &ifmr) < 0) { - syslog(LOG_ERR, "SIOCGIFMEDIA: %m"); - aif->pub.mode = ATMIF_SUNI_MODE_UNKNOWN; - return (SNMP_ERR_GENERR); - } - if (ifmr.ifm_current & IFM_ATM_SDH) - aif->pub.mode = ATMIF_SUNI_MODE_SDH; - else - aif->pub.mode = ATMIF_SUNI_MODE_SONET; - - return (SNMP_ERR_NOERROR); -} - -/* - * Change the SUNI mod - */ -static int -atmif_set_mode(struct atmif_priv *aif, int newmode) -{ - struct ifmediareq ifmr; - struct ifreq ifr; - - memset(&ifmr, 0, sizeof(ifmr)); - strcpy(ifmr.ifm_name, aif->pub.ifp->name); - - /* get current mode */ - if (ioctl(mib_netsock, SIOCGIFMEDIA, &ifmr) < 0) { - syslog(LOG_ERR, "SIOCGIFMEDIA: %m"); - return (SNMP_ERR_GENERR); - } - - memset(&ifr, 0, sizeof(ifr)); - strcpy(ifr.ifr_name, aif->pub.ifp->name); - - ifr.ifr_media = ifmr.ifm_current; - if (newmode == ATMIF_SUNI_MODE_SDH) - ifr.ifr_media |= IFM_ATM_SDH; - else - ifr.ifr_media &= ~IFM_ATM_SDH; - - if (ioctl(mib_netsock, SIOCSIFMEDIA, &ifr) < 0) { - syslog(LOG_ERR, "SIOCSIFMEDIA: %m"); - return (SNMP_ERR_GENERR); - } - - aif->pub.mode = newmode; - return (SNMP_ERR_NOERROR); -} - -/* - * Attach to an ATM interface - */ -static void -attach_if(struct mibif *ifp) -{ - struct atmif_priv *aif; - - /* we should not know it */ - TAILQ_FOREACH(aif, &atmif_list, link) - if (aif->pub.ifp == ifp) { - syslog(LOG_CRIT, "new ATM if already known '%s'", - ifp->name); - return; - } - - /* - * tap it - */ - if ((aif = malloc(sizeof(*aif))) == NULL) { - syslog(LOG_ERR, "new atmif: %m"); - return; - } - memset(aif, 0, sizeof(*aif)); - - aif->pub.ifp = ifp; - aif->index = ifp->index; - - if (atmif_sys_attach_if(aif)) { - free(aif); - return; - } - - aif->ifpreg = mibif_notify(ifp, module, atmif_notify, aif); - - aif->pub.carrier = ATMIF_CARRIER_UNKNOWN; - atmif_check_carrier(aif); - (void)atmif_get_mode(aif); - - INSERT_OBJECT_INT(aif, &atmif_list); - - last_change = this_tick; - - return; -} - -/* - * Function gets called when a new interface is created. If this is an - * ATM interface, hook in. Claim the interface in any case even when - * the creation of our data structures fails. - */ -static int -new_if(struct mibif *ifp) -{ - if (!started || ifp->mib.ifmd_data.ifi_type != IFT_ATM || - ifp->xnotify != NULL) - return (0); - - attach_if(ifp); - return (1); -} - -/* - * Start the module - */ -static void -atm_start(void) -{ - struct mibif *ifp; - - reg_atm = or_register(&oid_begemotAtm, - "The Begemot MIB for ATM interfaces.", module); - - started = 1; - for (ifp = mib_first_if(); ifp != NULL; ifp = mib_next_if(ifp)) - if (ifp->mib.ifmd_data.ifi_type == IFT_ATM && - ifp->xnotify == NULL) - attach_if(ifp); -} - -/* - * Called when modules is loaded - */ -static int -atm_init(struct lmodule *mod, int argc __unused, char *argv[] __unused) -{ - module = mod; - - /* register to get creation messages for ATM interfaces */ - if (mib_register_newif(new_if, module)) { - syslog(LOG_ERR, "cannot register newif function: %m"); - return (-1); - } - - return (0); -} - -/* - * Called when module gets unloaded - free all resources - */ -static int -atm_fini(void) -{ - struct atmif_priv *aif; - - while ((aif = TAILQ_FIRST(&atmif_list)) != NULL) - atmif_destroy(aif); - - mib_unregister_newif(module); - or_unregister(reg_atm); - - return (0); -} - -/* - * Other module unloaded/loaded - */ -static void -atm_loading(const struct lmodule *mod, int loading) -{ - struct atmif_priv *aif; - struct atmif_reg *r0, *r1; - - if (!loading) { - /* remove notifications for this module */ - TAILQ_FOREACH(aif, &atmif_list, link) - TAILQ_FOREACH_SAFE(r0, &aif->notify, link, r1) { - if (r0->mod == mod) { - TAILQ_REMOVE(&aif->notify, r0, link); - free(r0); - } - } - } -} - -const struct snmp_module config = { - .comment = "This module implements a private MIB for ATM interfaces.", - .init = atm_init, - .fini = atm_fini, - .start = atm_start, - .tree = atm_ctree, - .tree_size = atm_CTREE_SIZE, - .loading = atm_loading -}; - -/* - * Get the interface point for a table access - */ -int -atmif_get_aif(struct snmp_value *value, u_int sub, enum snmp_op op, - struct atmif_priv **aifp) -{ - switch (op) { - - case SNMP_OP_GETNEXT: - if ((*aifp = NEXT_OBJECT_INT(&atmif_list, - &value->var, sub)) == NULL) - return (SNMP_ERR_NOSUCHNAME); - value->var.len = sub + 1; - value->var.subs[sub] = (*aifp)->index; - break; - - case SNMP_OP_GET: - if ((*aifp = FIND_OBJECT_INT(&atmif_list, - &value->var, sub)) == NULL) - return (SNMP_ERR_NOSUCHNAME); - break; - - case SNMP_OP_SET: - if ((*aifp = FIND_OBJECT_INT(&atmif_list, - &value->var, sub)) == NULL) - return (SNMP_ERR_NO_CREATION); - break; - - case SNMP_OP_ROLLBACK: - case SNMP_OP_COMMIT: - if ((*aifp = FIND_OBJECT_INT(&atmif_list, - &value->var, sub)) == NULL) - abort(); - return (SNMP_ERR_NOERROR); - } - - if ((*aifp)->pub.mib->pcr == 0) { - mib_fetch_ifmib((*aifp)->pub.ifp); - atmif_sys_fill_mib(*aifp); - atmif_check_carrier(*aifp); - } - - return (SNMP_ERR_NOERROR); -} - -/* - * Table of all ATM interfaces - */ -int -op_atmif(struct snmp_context *ctx __unused, struct snmp_value *value, - u_int sub, u_int vindex __unused, enum snmp_op op) -{ - struct atmif_priv *aif; - int err; - - if ((err = atmif_get_aif(value, sub, op, &aif)) != SNMP_ERR_NOERROR) - return (err); - - if (op == SNMP_OP_SET) { - switch (value->var.subs[sub - 1]) { - - default: - return (SNMP_ERR_NOT_WRITEABLE); - - case LEAF_begemotAtmIfMode: - if ((err = atmif_get_mode(aif)) != SNMP_ERR_NOERROR) - return (err); - if (aif->pub.mode == ATMIF_SUNI_MODE_UNKNOWN) - return (SNMP_ERR_INCONS_VALUE); - if (value->v.integer != ATMIF_SUNI_MODE_SONET && - value->v.integer != ATMIF_SUNI_MODE_SDH) - return (SNMP_ERR_WRONG_VALUE); - if ((u_int)value->v.integer == aif->pub.mode) - return (SNMP_ERR_NOERROR); - return (atmif_set_mode(aif, value->v.integer)); - } - abort(); - } - - switch (value->var.subs[sub - 1]) { - - case LEAF_begemotAtmIfName: - return (string_get(value, aif->pub.ifp->name, -1)); - - case LEAF_begemotAtmIfPcr: - value->v.uint32 = aif->pub.mib->pcr; - return (SNMP_ERR_NOERROR); - - case LEAF_begemotAtmIfMedia: - value->v.integer = aif->pub.mib->media; - return (SNMP_ERR_NOERROR); - - case LEAF_begemotAtmIfVpiBits: - value->v.uint32 = aif->pub.mib->vpi_bits; - return (SNMP_ERR_NOERROR); - - case LEAF_begemotAtmIfVciBits: - value->v.uint32 = aif->pub.mib->vci_bits; - return (SNMP_ERR_NOERROR); - - case LEAF_begemotAtmIfMaxVpcs: - value->v.uint32 = aif->pub.mib->max_vpcs; - return (SNMP_ERR_NOERROR); - - case LEAF_begemotAtmIfMaxVccs: - value->v.uint32 = aif->pub.mib->max_vccs; - return (SNMP_ERR_NOERROR); - - case LEAF_begemotAtmIfEsi: - return (string_get(value, aif->pub.mib->esi, 6)); - - case LEAF_begemotAtmIfCarrierStatus: - value->v.integer = aif->pub.carrier; - return (SNMP_ERR_NOERROR); - - case LEAF_begemotAtmIfMode: - if ((err = atmif_get_mode(aif)) != SNMP_ERR_NOERROR) - return (err); - value->v.integer = aif->pub.mode; - return (SNMP_ERR_NOERROR); - } - abort(); -} - -/* - * Hardware table - */ -int -op_atmhw(struct snmp_context *ctx __unused, struct snmp_value *value, - u_int sub, u_int vindex __unused, enum snmp_op op) -{ - struct atmif_priv *aif; - int err; - - if ((err = atmif_get_aif(value, sub, op, &aif)) != SNMP_ERR_NOERROR) - return (err); - if (op == SNMP_OP_SET) - return (SNMP_ERR_NOT_WRITEABLE); - - switch (value->var.subs[sub - 1]) { - - case LEAF_begemotAtmHWVendor: - return (atm_sys_get_hw_vendor(aif, value)); - - case LEAF_begemotAtmHWDevice: - return (atm_sys_get_hw_device(aif, value)); - - case LEAF_begemotAtmHWSerial: - value->v.uint32 = aif->pub.mib->serial; - return (SNMP_ERR_NOERROR); - - case LEAF_begemotAtmHWVersion: - value->v.uint32 = aif->pub.mib->hw_version; - return (SNMP_ERR_NOERROR); - - case LEAF_begemotAtmHWSoftVersion: - value->v.uint32 = aif->pub.mib->sw_version; - return (SNMP_ERR_NOERROR); - - } - abort(); -} - -/* - * Scalars - */ -int -op_atm(struct snmp_context *ctx __unused, struct snmp_value *value, - u_int sub, u_int vindex __unused, enum snmp_op op) -{ - switch (op) { - - case SNMP_OP_GETNEXT: - abort(); - - case SNMP_OP_GET: - switch (value->var.subs[sub - 1]) { - - case LEAF_begemotAtmIfTableLastChange: - value->v.uint32 = - (last_change == 0 ? 0 : last_change - start_tick); - return (SNMP_ERR_NOERROR); - } - abort(); - - case SNMP_OP_SET: - return (SNMP_ERR_NOT_WRITEABLE); - - case SNMP_OP_ROLLBACK: - case SNMP_OP_COMMIT: - abort(); - } - abort(); -} - -/* - * Register for interface notifications - */ -void * -atm_notify_aif(struct atmif *pub, const struct lmodule *mod, - atmif_event_f func, void *arg) -{ - struct atmif_priv *aif = (struct atmif_priv *)pub; - struct atmif_reg *r0; - - if ((r0 = malloc(sizeof(*r0))) == NULL) { - syslog(LOG_CRIT, "out of memory"); - return (NULL); - } - r0->func = func; - r0->mod = mod; - r0->data = arg; - r0->aif = aif; - - TAILQ_INSERT_TAIL(&aif->notify, r0, link); - - return (r0); -} - -/* - * Unregister it - */ -void -atm_unnotify_aif(void *arg) -{ - struct atmif_reg *r0 = arg; - - TAILQ_REMOVE(&r0->aif->notify, r0, link); - free(r0); -} diff --git a/contrib/ngatm/snmp_atm/snmp_atm.h b/contrib/ngatm/snmp_atm/snmp_atm.h deleted file mode 100644 index 50784ccc45bb..000000000000 --- a/contrib/ngatm/snmp_atm/snmp_atm.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2001-2002 - * Fraunhofer Institute for Open Communication Systems (FhG Fokus). - * All rights reserved. - * Copyright (c) 2003-2004 - * Hartmut Brandt - * All rights reserved. - * - * Author: Hartmut Brandt <harti@freebsd.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Begemot: libunimsg/snmp_atm/snmp_atm.h,v 1.2 2004/08/06 17:30:40 brandt Exp $ - */ -#ifndef _BSNMP_SNMP_ATM_H -#define _BSNMP_SNMP_ATM_H - -enum atmif_notify { - ATMIF_NOTIFY_DESTROY, /* interface has been destroyed */ - ATMIF_NOTIFY_CARRIER, /* carriere change */ - ATMIF_NOTIFY_VCC /* VCC change */ -}; - -enum atmif_carrier_state { - ATMIF_CARRIER_ON = 1, - ATMIF_CARRIER_OFF = 2, - ATMIF_CARRIER_UNKNOWN = 3, - ATMIF_CARRIER_NONE = 4 -}; - -enum atmif_suni_mode { - ATMIF_SUNI_MODE_SONET = 1, - ATMIF_SUNI_MODE_SDH = 2, - ATMIF_SUNI_MODE_UNKNOWN = 3 -}; - -/* forward declaration */ -struct atmif; -typedef void (*atmif_event_f)(struct atmif *, enum atmif_notify, uintptr_t, - void *); - -struct atmif_mib { - u_int version; /* currently 0 */ - - u_int device; /* type of hardware (system specific) */ - u_int serial; /* card serial number (device specific) */ - u_int hw_version; /* card version (device specific) */ - u_int sw_version; /* firmware version (device specific) */ - u_int media; /* physical media (see MIB) */ - - u_char esi[6]; /* end system identifier (MAC) */ - u_int pcr; /* supported peak cell rate */ - u_int vpi_bits; /* number of used bits in VPI field */ - u_int vci_bits; /* number of used bits in VCI field */ - u_int max_vpcs; /* maximum number of VPCs */ - u_int max_vccs; /* maximum number of VCCs */ -}; - -struct atmif { - struct mibif *ifp; /* common interface data */ - struct atmif_mib *mib; /* ATM MIB */ - enum atmif_carrier_state carrier; - enum atmif_suni_mode mode; /* SUNI mode SDH or SONET */ -}; - -/* find an ATM interface by name */ -struct atmif *atm_find_if_name(const char *); - -/* get the interface from the interface index */ -struct atmif *atm_find_if(u_int); - -/* register for notifications */ -void *atm_notify_aif(struct atmif *, const struct lmodule *mod, - atmif_event_f, void *); -void atm_unnotify_aif(void *); - -/* return the If for a system-specific node number */ -struct atmif *atm_node2if(u_int); - -/* return the node id for the if */ -u_int atm_if2node(struct atmif *); - -#endif |