unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

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

ng_ccatm(4)              BSD Kernel Interfaces Manual              ng_ccatm(4)

NAME
     ng_ccatm -- netgraph ATM Call Control node type

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

DESCIPTION
     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 has also one hook connected to the ILMI daemon for management
     purposes.

     The node is removed when it receives a NGM_SHUTDOWN messages or 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_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 {
             u_int32_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 inter-
          face.  The argument is a struct

          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 itseld 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 listeing hooks or rejected.

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

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

     NGM_CCATM_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 processing on the port.  The argument is a ngm_ccatm_port
          structure.

     NGM_CCATM_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 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 {
                  u_int32_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
          This message is used by ILMI to inform the ng_ccatm node, that a
          previous 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
          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
          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
          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 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
          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
          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 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)

AUTHOR
     Harti Brandt <hartiATFreeBSD.org>

FreeBSD                         March 10, 2005                         FreeBSD