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

FreeBSD Manual Pages

  
 
  

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

NAME
     ng_ccatm -- ATM Call Control netgraph node	type

SYNOPSIS
     #include <netnatm/unimsg.h>
     #include <netnatm/msg/unistruct.h>
     #include <netnatm/sig/unidef.h>
     #include <netnatm/api/unisap.h>
     #include <netnatm/api/atmapi.h>
     #include <netnatm/api/ccatm.h>
     #include <netgraph.h>
     #include <netgraph/ng_uni.h>
     #include <netgraph/ng_ccatm.h>

DESCRIPTION
     The ng_ccatm node implements the API specified by the ATM Forum for
     access to ATM services (see ATM-Forum document af-saa-0108).  This	docu-
     ment specifies the	semantics of the API, not the exact language binding.
     For this reason, it is expected that this implementation is neither com-
     pile-time nor binary compatible with other	implementations	of this	API.
     It	should,	however, be fairly straightforward to convert between differ-
     ent API implementations.

     This node is usually stacked on top of one	or more	UNI nodes (see
     ng_uni(4)).  Each of these	hooks appears as a ``port'' to the user	of the
     node.  It also has	one hook connected to the ILMI daemon for management
     purposes.

     The node is removed when it receives a NGM_SHUTDOWN messages or when all
     hooks are disconnected.

HOOKS
     The node understands a number of hooks with predefined names and an
     unlimited number of hooks for user	connections.  The predefined names
     are:

     uniNNN   These hooks stack	the ng_ccatm node on top of a UNI stack.  The
	      node expects the interface on these hooks	to conform to the
	      upper interface specified	in ng_uni(4).  These hooks are forced
	      into queuing mode, so that there are no circular calls from call
	      control to UNI and UNI back to call control.  The	NNN in the
	      hook name	is the decimal port number and should not be zero.
	      The port number is a 32-bit unsigned integer.

     manage   This hook	should be connected to the ILMI	daemon.	 No data is
	      ever sent	on this	hook and all received data is discarded.  The
	      hook is used to send control messages along.

     dump     On receipt of a NGM_CCATM_DUMP command a textual description of
	      the current state	of the node is sent out	of this	hook.  This
	      text is sent as one large	message	consisting of more than	one
	      mbuf.

     All other hook names are taken to be user hooks and correspond to an ATM
     endpoint as specified in the ATM Forum document.  The interface on	these
     hooks is defined in <atmapi.h> and	uses a structure

     struct ccatm_op {
	     uint32_t	     op;     /*	request	code */
	     u_char	     data[]; /*	optional data */
     };

     This structure is followed	directly by the	data for the operation.	 The
     opcode is one of the following:

     enum atmop	{
	     ATMOP_RESP,
	     ATMOP_ABORT_CONNECTION,
	     ATMOP_ACCEPT_INCOMING_CALL,
	     ATMOP_ADD_PARTY,
	     ATMOP_ADD_PARTY_REJECT,
	     ATMOP_ADD_PARTY_SUCCESS,
	     ATMOP_ARRIVAL_OF_INCOMING_CALL,
	     ATMOP_CALL_RELEASE,
	     ATMOP_CONNECT_OUTGOING_CALL,
	     ATMOP_DROP_PARTY,
	     ATMOP_GET_LOCAL_PORT_INFO,
	     ATMOP_P2MP_CALL_ACTIVE,
	     ATMOP_P2P_CALL_ACTIVE,
	     ATMOP_PREPARE_INCOMING_CALL,
	     ATMOP_PREPARE_OUTGOING_CALL,
	     ATMOP_QUERY_CONNECTION_ATTRIBUTES,
	     ATMOP_REJECT_INCOMING_CALL,
	     ATMOP_SET_CONNECTION_ATTRIBUTES,
	     ATMOP_WAIT_ON_INCOMING_CALL,
	     ATMOP_SET_CONNECTION_ATTRIBUTES_X,
	     ATMOP_QUERY_CONNECTION_ATTRIBUTES_X,
	     ATMOP_QUERY_STATE
     };

     These codes correspond directly to	the operations specified in the	ATM
     Forum document with the following exceptions:

     ATMOP_RESP
	  As discussed in ng_uni(4), this is used to ``synchronify'' the
	  interface.  The argument is a

	  struct atm_resp {
		  int32_t	  resp;
		  uint32_t	  data;		  /* type of attached data */
	  };

	  If the response code resp is zero, the node has accepted the user
	  request.  If something goes wrong, resp contains an error code.  For
	  requests that	return data, data contains a code describing the type
	  of data and the data itself starts immediately after the structure.

     ATMOP_QUERY_CONNECTION_ATTRIBUTES_X
	  This is the same as ATMOP_QUERY_CONNECTION_ATTRIBUTES	except that it
	  allows to query several attributes within one	request.

     ATMOP_SET_CONNECTION_ATTRIBUTES_X
	  This is the same as ATMOP_SET_CONNECTION_ATTRIBUTES except that it
	  allows to set	several	attributes within one request.	The list of
	  attributes is	followed directly by the attributes in the same	order
	  as they appear in the	list.

     If	a user hook is disconnected, an	active connection on that hook is
     released.	Incoming connections waiting to	be accepted are	reoffered to
     other listening hooks or rejected.

CONTROL	MESSAGES
     Besides the generic messages the node understands the following special
     messages:

     NGM_CCATM_DUMP (dump)
	  This causes the internal state of the	node to	be dumped in ASCII to
	  the dump hook.

     NGM_CCATM_STOP (stop)
	  This message causes all connections on that port to be aborted (not
	  released!) and all ATM endpoints which are bound to that port	to be
	  closed.  It stops processing of all messages from the	UNI stack on
	  that port UNI	stack.	The argument is	a

	  struct ngm_ccatm_port	{
		  uint32_t	  port;
	  };

     NGM_CCATM_START (start)
	  Start	processing on the port.	 The argument is a ngm_ccatm_port
	  structure.

     NGM_CCATM_CLEAR (clear)
	  This message takes a ngm_ccatm_port structure	and clears all pre-
	  fixes	and addresses on that port.  If	the port number	is zero, all
	  ports	are cleared.

     NGM_CCATM_GET_ADDRESSES (get_addresses)
	  Get the list of all registered addresses on the given	port.  The
	  argument is a	ngm_ccatm_port structure and the result	is a
	  ngm_ccatm_get_addresses structure:

	  struct ngm_ccatm_get_addresses {
		  uint32_t	  count;
		  struct ngm_ccatm_address_req addr[0];
	  };
	  struct ngm_ccatm_address_req {
		  uint32_t	  port;
		  struct uni_addr addr;
	  };

	  If the port field is zero in the request, all	addresses on all ports
	  are returned.	 If it is not zero, only the addresses on that port
	  are reported.	 The number of addresses is returned in	the count
	  field.

     NGM_CCATM_ADDRESS_REGISTERED (address_reg)
	  This message is used by ILMI to inform the ng_ccatm node that	a pre-
	  vious	address	registration request was successful.  This causes the
	  node to activate that	address.  The argument to the message is a
	  ngm_ccatm_address_req	structure.

     NGM_CCATM_ADDRESS_UNREGISTERED (address_unreg)
	  This message is used by ILMI to inform the ng_ccatm node that	an
	  address has been unregistered.  The node clears that address from
	  its tables.  The argument is a ngm_ccatm_address_req structure.

     NGM_CCATM_SET_PORT_PARAM (set_port_param)
	  This request sets the	parameters on the given	port.  The argument is
	  a

	  struct ngm_ccatm_atm_port {
		  uint32_t port;	  /* port for which to set parameters */
		  uint32_t pcr;		  /* port peak cell rate */
		  uint32_t max_vpi_bits;
		  uint32_t max_vci_bits;
		  uint32_t max_svpc_vpi;
		  uint32_t max_svcc_vpi;
		  uint32_t min_svcc_vci;
		  uint8_t  esi[6];
		  uint32_t num_addr;
	  };

	  This should be used only by ILMI and when that port is stopped and
	  the address and prefix tables	of that	port are empty.	 The num_addr
	  field	is ignored.

     NGM_CCATM_GET_PORT_PARAM (get_port_param)
	  Retrieve the parameters of the given port.  The argument is a
	  ngm_ccatm_port and the result	a ngm_ccatm_atm_port.

     NGM_CCATM_GET_PORTLIST (get_portlist)
	  Get a	list of	all available ports on that node.  This	is returned as
	  a

	  struct ngm_ccatm_portlist {
		  uint32_t	  nports;
		  uint32_t	  ports[];
	  };

     NGM_CCATM_GETSTATE	(getstate)
	  Return the state of a	port.  The argument is a struct	ngm_ccatm_port
	  and the return values	as a uint32_t.

     NGM_CCATM_SETLOG (setlog)
	  This requests	sets a new logging level and returns the previous one.
	  The argument is either a uint32_t in which case it specifies the new
	  logging level, or may	be empty in which case just the	old level is
	  returned as a	uint32_t.

     NGM_CCATM_RESET (reset)
	  Reset	the node.  This	is allowed only	if the number of user hooks
	  and connected	UNI stacks is zero.

     NGM_CCATM_GET_EXSTAT
	  Return extended status information from the node.

SEE ALSO
     netgraph(4), ng_uni(4), ngctl(8)

AUTHORS
     Harti Brandt <harti@FreeBSD.org>

FreeBSD	Ports 11.2		March 10, 2005		    FreeBSD Ports 11.2

NAME | SYNOPSIS | DESCRIPTION | HOOKS | CONTROL MESSAGES | SEE ALSO | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=ng_ccatm&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help