SNMP_ATM(3)

NAME
atmif_event_f, atm_find_if_name, atm_find_if, atm_notify_aif, atm_unnotify_aif - ATM driver module for snmpd.

LIBRARY
(begemotSnmpdModulePath."netgraph" = /usr/lib/snmp_netgraph.so (FreeBSD)) (begemotSnmpdModulePath."mibII" = /usr/lib/snmp_mibII.so) (begemotSnmpdModulePath."atm" = /usr/lib/snmp_atm.so)

SYNOPSIS
#include <bsnmp/snmpmod.h>
#include <bsnmp/snmp_mibII.h>
#include <bsnmp/snmp_atm.h>
typedef void
(*atmif_event_f)(struct atmif *aif, enum atmif_notify event, uintptr_t data, void *uarg);
struct atmif *
atm_find_if_name(const char *name);
struct atmif *
atm_find_if(u_int ifindex);
void *
atm_notify_aif(struct atmif *aif, const struct lmodule *mod, atmif_event_f func, void *uarg);
void
atm_unnotify_aif(void *not);

DESCRIPTION
The 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.

The module maintains an extension to the interface structure exported by snmp_mibII(3) for all ATM devices. This structure has the following fields:

    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 */
    };

The fields have the following meaning:

ifp The field points to the snmp_mibII(3) interface structure.

mib The special ATM interface MIB (see below).

carrier
    The current state of the carrier. One of the following:

    ATMIF_CARRIER_ON
        carrier detected,

    ATMIF_CARRIER_OFF
        no carrier,

    ATMIF_CARRIER_UNKNOWN
        the state of the carrier is unknown,

    ATMIF_CARRIER_NONE
        the device has no notion of carrier or is not able to sense it.

mode
    For ATM devices with a SUNI chip this is the current mode of the interface:

    ATMIF_SUNI_MODE_SONET
        The interface is in SONET mode.

    ATMIF_SUNI_MODE_SDH
        The interface is in SDH mode.

    ATMIF_SUNI_MODE_UNKNOWN
        The interface either has no SUNI interface or the mode is unknown (for example, interface is down).

An ATM interface can be found by name or by SNMP interface index (see snmp_mibII(3) for a discussion of interface indexes). The function atm_find_if_name() searches an interface given a name. The function atm_find_if() searches an interface by its interface index. Both functions return NULL if an interface cannot be found.

The ATM MIB contains the following fields:

    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 */
    };

  NOTIFICATIONS
An other module can register with atmif_event_f to receive notifications when certain events happen on the ATM interface. The registration is done with 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:

ATMIF_NOTIFY_DESTROY
    The interface is destroyed. The notification argument is not used.

ATMIF_NOTIFY_CARRIER
    The carrier state on the interface has changed. The argument is the old state of the carrier. The new state can be obtained from the interface structure.

ATMIF_NOTIFY_VCC
    A permanent VCC has been created or destroyed. The argument is an u_int that can be decoded as follows:

        vpi = (arg >> 24) & 0xff;
        vci = (arg >>  8) & 0xffff;
        state = arg & 1;

    state is 0 if the VCC was destroyed and 1 if it was created.
The registration for notification can be undone by passing the return value from atm_notify_aif() to atm_unnotify_aif(). The registrations is automatically removed if the interface is destroyed.

  MIB
The MIB implemented by the module is defined in BEGEMOT-ATM.txt. In the generic part there are two tables and one scalar, there is also a system specific group:

begemotAtmIfTable
    This table is an extension of ifTable. It contains a row for each ATM interface and is index with ifIndex. All fields are read-only except the begemotAtmIfMode column.

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.

begemotAtmHWTable
    Is also indexed by ifIndex and contains hardware specific information. This table is read-only.

FILES

/usr/share/snmp/defs/atm_tree.def
    The description of the MIB tree implemented by atmif_event_f.

/usr/share/snmp/mibs/BEGEMOT-ATM.txt
    This is the MIB that is implemented by this module.

SEE ALSO
bsnmpd(1), gensnmptree(1), snmp_mibII(3), snmpmod(3), snmp_netgraph(3)

AUTHORS
Hartmut Brandt <harti@FreeBSD.org>