Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
NG_ATMPIF(4)		 BSD Kernel Interfaces Manual		  NG_ATMPIF(4)

     ng_atmpif -- netgraph HARP/ATM Virtual Physical Interface

     #include <sys/types.h>
     #include <netatm/atm_if.h>
     #include <netgraph/atm/ng_atmpif.h>

     The atmpif	netgraph node type allows the emulation	of atm(8) (ne-
     tatm/HARP)	Physical devices (PIF) to be connected to the netgraph(4) net-
     working 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 op-
     timize 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 ng_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 <>
     Vincent Jardin <>

BSD				August 7, 2003				   BSD


Want to link to this manual page? Use this URL:

home | help