Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (FreeBSD-5.4-RELEASE)
Apropos / Subsearch:
optional field

NG_ATMPIF(4)             BSD Kernel Interfaces Manual             NG_ATMPIF(4)

     ng_atmpif -- netgraph HARP/ATM Virtual Physical Interface

     #include <&lt;netgraph/netgraph.h>&gt;
     #include <&lt;netgraph/atm/ng_atmpif.h>&gt;

     The atmpif netgraph node type allows the emulation of atm(8)
     (netatm/HARP) Physical devices (PIF) to be connected to the netgraph(4)
     networking subsystem.  Moreover, it includes protection of the PDU
     against duplication and desequencement.  It supports up to 65535 VCs and
     up to 255 VPs.  AAL0, AAL3/4 and AAL5 emulation are provided.  In order
     to optimize CPU, this node does not emulate the SAR layer.

     The purpose of this node is to help in debugging and testing the HARP
     stack when one does not have an ATM board or when the available boards do
     not have enough features.

     When a node is created, a PIF is created automatically.  It is named
     hvaX.  It has the same features as any other HARP devices.  The PIF is
     removed when the node is removed.

     There is only one hook: link.  This hook can be connected to any other
     Netgraph node.  For example, in order to test the HARP stack over UDP, it
     can be connected on a ksocket(4) node.

     This node type supports the generic messages plus the following:

     NGM_ATMPIF_SET_CONFIG (setconfig)
             Configures the debugging features of the node and a virtual Peak
             Cell Rate (PCR).  It uses the same structure as

     NGM_ATMPIF_GET_CONFIG (getconfig)
             Returns a structure defining the configuration of the interface:

             struct ng_vatmpif_config {
                     uint8_t       debug;        /* debug bit field (see below) */
                     uint32_t      pcr;          /* peak cell rate */
                     Mac_addr      macaddr;      /* Mac Address */
             Note that the following debugging flags can be used:

                   VATMPIF_DEBUG_NONE    disable debugging
                   VATMPIF_DEBUG_PACKET  enable debugging

     NGM_ATMPIF_GET_LINK_STATUS (getlinkstatus)
             Returns the last received sequence number, the last sent sequence
             number and the current total PCR that is reserved among all the
             VCCs of the interface.

             struct ng_atmpif_link_status {
                     uint32_t    InSeq;    /* last received sequence number + 1 */
                     uint32_t    OutSeq;   /* last sent sequence number */
                     uint32_t    cur_pcr;  /* slot's reserved PCR */

     NGM_ATMPIF_GET_STATS (getstats)
     NGM_ATMPIF_CLR_STATS (clrstats)
     NGM_ATMPIF_GETCLR_STATS (getclrstats)
             It returns the node's statistics, it clears them or it returns
             and resets their values to 0.  The following stats are provided.

             struct hva_stats_ng {
                  uint32_t     ng_errseq;      /* Duplicate or out of order */
                  uint32_t     ng_lostpdu;     /* PDU lost detected */
                  uint32_t     ng_badpdu;      /* Unknown PDU type */
                  uint32_t     ng_rx_novcc;    /* Draining PDU on closed VCC */
                  uint32_t     ng_rx_iqfull;   /* PDU drops no room in atm_intrq */
                  uint32_t     ng_tx_rawcell;  /* PDU raw cells transmitted */
                  uint32_t     ng_rx_rawcell;  /* PDU raw cells received */
                  uint64_t     ng_tx_pdu;      /* PDU transmitted */
                  uint64_t     ng_rx_pdu;      /* PDU received */
             struct hva_stats_atm {
                  uint64_t     atm_xmit;       /* Cells transmitted */
                  uint64_t     atm_rcvd;       /* Cells received */
             struct hva_stats_aal5 {
                  uint64_t     aal5_xmit;      /* Cells transmitted */
                  uint64_t     aal5_rcvd;      /* Cells received */
                  uint32_t     aal5_crc_len;   /* Cells with CRC/length errors */
                  uint32_t     aal5_drops;     /* Cell drops */
                  uint64_t     aal5_pdu_xmit;  /* CS PDUs transmitted */
                  uint64_t     aal5_pdu_rcvd;  /* CS PDUs received */
                  uint32_t     aal5_pdu_crc;   /* CS PDUs with CRC errors */
                  uint32_t     aal5_pdu_errs;  /* CS layer protocol errors */
                  uint32_t     aal5_pdu_drops; /* CS PDUs dropped */

     natm(4), netgraph(4), ng_ksocket(4), ngctl(8)

     Harti Brandt <hartiATFreeBSD.org>
     Vincent Jardin <vjardinATwanadoo.fr>

BSD                             August 7, 2003                             BSD