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

FreeBSD Manual Pages


home | help
ng_atmpif(4)	       FreeBSD Kernel Interfaces Manual		  ng_atmpif(4)

     ng_atmpif -- netgraph HARP/ATM Virtual Physical Interface

     #include <netgraph/netgraph.h>
     #include <netgraph/atm/ng_atmpif.h>

     The ng_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 opti-
     mize 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 ng_atmpif 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_CON-

     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_NONEdisable debugging
		VATMPIF_DEBUG_PACKETenable 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
	  reset	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 */

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

     Harti Brandt <>
     Vincent Jardin <>

FreeBSD				August 7, 2003			       FreeBSD


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

home | help