diff options
Diffstat (limited to 'sys/netatm/atm_cm.h')
-rw-r--r-- | sys/netatm/atm_cm.h | 351 |
1 files changed, 0 insertions, 351 deletions
diff --git a/sys/netatm/atm_cm.h b/sys/netatm/atm_cm.h deleted file mode 100644 index c9e6dc5..0000000 --- a/sys/netatm/atm_cm.h +++ /dev/null @@ -1,351 +0,0 @@ -/*- - * - * =================================== - * HARP | Host ATM Research Platform - * =================================== - * - * - * This Host ATM Research Platform ("HARP") file (the "Software") is - * made available by Network Computing Services, Inc. ("NetworkCS") - * "AS IS". NetworkCS does not provide maintenance, improvements or - * support of any kind. - * - * NETWORKCS MAKES NO WARRANTIES OR REPRESENTATIONS, EXPRESS OR IMPLIED, - * INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE, AS TO ANY ELEMENT OF THE - * SOFTWARE OR ANY SUPPORT PROVIDED IN CONNECTION WITH THIS SOFTWARE. - * In no event shall NetworkCS be responsible for any damages, including - * but not limited to consequential damages, arising from or relating to - * any use of the Software or related support. - * - * Copyright 1994-1998 Network Computing Services, Inc. - * - * Copies of this Software may be made, however, the above copyright - * notice must be reproduced on all copies. - * - * @(#) $FreeBSD$ - * - */ - -/* - * Core ATM Services - * ----------------- - * - * ATM Connection Management definitions - * - */ - -#ifndef _NETATM_ATM_CM_H -#define _NETATM_ATM_CM_H - -/* - * Forward declaration - */ -struct atm_connection; -struct atm_attributes; - - -#ifdef _KERNEL -/* - * Structure used to define a kernel ATM endpoint service module and its - * associated entry points. An endpoint service is defined as a kernel - * entity which will serve as the endpoint of an ATM connection, i.e. it is - * responsible for issuing/receiving requests to/from the connection manager. - */ -struct atm_endpoint { - struct atm_endpoint *ep_next; /* Next in registry list */ - u_int ep_id; /* Endpoint ID (see below) */ - -/* Exported functions: Miscellaneous */ - int (*ep_ioctl) /* Ioctl */ - (int, caddr_t, caddr_t); - caddr_t (*ep_getname) /* Get application/owner name */ - (void *); - -/* Exported functions: Connection Manager Control API */ - void (*ep_connected) /* Call connected */ - (void *); - void (*ep_cleared) /* Call cleared */ - (void *, struct t_atm_cause *); - int (*ep_incoming) /* Incoming call */ - (void *, struct atm_connection *, - struct atm_attributes *, void **); - int (*ep_addparty) /* Add Party notification */ - (void *, int, int); - int (*ep_dropparty) /* Drop Party notification */ - (void *, int, int); - -/* Exported functions: Connection Manager Data API: CPCS */ - void (*ep_cpcs_ctl) /* Control operation */ - (int, void *, void *); - void (*ep_cpcs_data) /* Received data */ - (void *, KBuffer *); - -/* Exported functions: Connection Manager Data API: SAAL */ - void (*ep_saal_ctl) /* Control operation */ - (int, void *, void *); - void (*ep_saal_data) /* Received data */ - (void *, KBuffer *); - -/* Exported functions: Connection Manager Data API: SSCOP */ - void (*ep_sscop_ctl) /* Control operation */ - (int, void *, void *, void *); - void (*ep_sscop_data) /* Received data */ - (void *, KBuffer *, u_int); -}; -typedef struct atm_endpoint Atm_endpoint; -#endif /* _KERNEL */ - -/* - * Endpoint IDs - */ -#define ENDPT_UNKNOWN 0 /* Unknown */ -#define ENDPT_IP 1 /* IP over ATM */ -#define ENDPT_ATMARP 2 /* ATMARP */ -#define ENDPT_SPANS_SIG 3 /* SPANS Signalling */ -#define ENDPT_SPANS_CLS 4 /* SPANS CLS */ -#define ENDPT_UNI_SIG 5 /* UNI Signalling */ -#define ENDPT_SOCK_AAL5 6 /* Socket - AAL5 */ -#define ENDPT_SOCK_SSCOP 7 /* Socket - SSCOP */ -#define ENDPT_MAX 7 - - -/* - * ATM Connection Attributes - * - * Note: Attribute tag values are the same as the SVE_tag values. - * Unless otherwise specified, attribute field values are the same - * as the corresponding socket option values. - * The above values are all defined in netatm/atm.h. - */ - -/* AAL Attributes */ -struct t_atm_aal4 { - int32_t forward_max_SDU_size; - int32_t backward_max_SDU_size; - int32_t SSCS_type; - int32_t mid_low; - int32_t mid_high; -}; - -struct attr_aal { - int tag; /* Attribute tag */ - Aal_t type; /* AAL type (discriminator) */ - union { - struct t_atm_aal4 aal4; - struct t_atm_aal5 aal5; - } v; /* Attribute value */ -}; - -/* Traffic Descriptor Attributes */ -struct attr_traffic { - int tag; /* Attribute tag */ - struct t_atm_traffic v; /* Attribute value */ -}; - -/* Broadband Bearer Attributes */ -struct attr_bearer { - int tag; /* Attribute tag */ - struct t_atm_bearer v; /* Attribute value */ -}; - -/* Broadband High Layer Information Attributes */ -struct attr_bhli { - int tag; /* Attribute tag */ - struct t_atm_bhli v; /* Attribute value */ -}; - -/* Broadband Low Layer Information Attributes */ -struct attr_blli { - int tag_l2; /* Layer 2 attribute tag */ - int tag_l3; /* Layer 3 attribute tag */ - struct t_atm_blli v; /* Attribute value */ -}; - -/* Logical Link Control Attributes (multiplexing use only, not signalled) */ -struct attr_llc { - int tag; /* Attribute tag */ - struct t_atm_llc v; /* Attribute value */ -}; - -/* Called Party Attributes */ -struct attr_called { - int tag; /* Attribute tag */ - Atm_addr addr; /* Called party address */ - Atm_addr subaddr; /* Called party subaddress */ -}; - -/* Calling Party Attributes */ -struct attr_calling { - int tag; /* Attribute tag */ - Atm_addr addr; /* Calling party address */ - Atm_addr subaddr; /* Calling party subaddress */ - struct t_atm_caller_id cid; /* Caller ID */ -}; - -/* Quality of Service Attributes */ -struct attr_qos { - int tag; /* Attribute tag */ - struct t_atm_qos v; /* Attribute value */ -}; - -/* Transit Network Attributes */ -struct attr_transit { - int tag; /* Attribute tag */ - struct t_atm_transit v; /* Attribute value */ -}; - -/* Cause Attributes */ -struct attr_cause { - int tag; /* Attribute tag */ - struct t_atm_cause v; /* Attribute value */ -}; - - -struct atm_attributes { - struct atm_nif *nif; /* Network interface */ - u_int api; /* Connect Mgr Data API (see below) */ - int api_init;/* API initialization parameter */ - u_short headin; /* Input buffer headroom */ - u_short headout;/* Output buffer headroom */ - struct attr_aal aal; /* AAL attributes */ - struct attr_traffic traffic;/* Traffic descriptor attributes */ - struct attr_bearer bearer; /* Broadband bearer attributes */ - struct attr_bhli bhli; /* Broadband high layer attributes */ - struct attr_blli blli; /* Broadband low layer attributes */ - struct attr_llc llc; /* Logical link control attributes */ - struct attr_called called; /* Called party attributes */ - struct attr_calling calling;/* Calling party attributes */ - struct attr_qos qos; /* Quality of service attributes */ - struct attr_transit transit;/* Transit network attributes */ - struct attr_cause cause; /* Cause attributes */ -}; -typedef struct atm_attributes Atm_attributes; - -/* - * Connection Manager Data APIs - */ -#define CMAPI_CPCS 0 /* AAL CPCS */ -#define CMAPI_SAAL 1 /* Signalling AAL */ -#define CMAPI_SSCOP 2 /* Reliable data (SSCOP) */ - - -#ifdef _KERNEL -/* - * ATM Connection Instance - * - * There will be one connection block for each endpoint <-> Connection Manager - * API instance. Note that with connection multiplexors (e.g. LLC), there - * may be multiple connections per VCC. - */ -struct atm_connection { - struct atm_connection *co_next; /* Multiplexor/listen queue link */ - struct atm_connection *co_mxh; /* Connection multiplexor head */ - u_char co_flags; /* Connection flags (see below) */ - u_char co_state; /* User <-> CM state (see below) */ - Encaps_t co_mpx; /* Multiplexor type */ - void *co_toku; /* Endpoint's session token */ - Atm_endpoint *co_endpt; /* Endpoint service */ - struct atm_connvc *co_connvc; /* Connection VCC */ - struct attr_llc co_llc; /* Connection LLC header */ - Atm_attributes *co_lattr; /* Listening attributes */ -}; -typedef struct atm_connection Atm_connection; - -/* - * Connection Flags - */ -#define COF_P2P 0x01 /* Point-to-point */ -#define COF_P2MP 0x02 /* Point-to-multipoint */ - -/* - * Endpoint <-> Connection Manager States - */ -#define COS_FREE 0 /* Not allocated */ -#define COS_OUTCONN 1 /* Outgoing connection pending */ -#define COS_LISTEN 2 /* Listening for connection */ -#define COS_INCONN 3 /* Incoming connection pending */ -#define COS_INACCEPT 4 /* Incoming connection accepted */ -#define COS_ACTIVE 5 /* Connection active */ -#define COS_CLEAR 6 /* Connection is clearing */ - - -/* - * ATM Connection VCC Instance - * - * There will be one connection-vcc block for each VCC created by the - * Connection Manager. For multiplexed connections, there may be multiple - * connection blocks associated with each connection-vcc. This block is - * used to control the Connection Manager <-> VCC interface, including the - * interfaces to stack management and the signalling manager. - */ -struct atm_connvc { - Qelem_t cvc_q; /* Queueing links */ - Atm_connection *cvc_conn; /* Connection head */ - struct vccb *cvc_vcc; /* VCC for connection */ - struct sigmgr *cvc_sigmgr; /* VCC signalling manager */ - u_char cvc_flags; /* Connection flags (see below) */ - u_char cvc_state; /* CM - VCC state (see below) */ - void *cvc_tokl; /* Stack lower layer token */ - void (*cvc_lower) /* Stack lower layer handler */ - (int, void *, intptr_t, intptr_t); - u_short cvc_upcnt; /* Up stack calls in progress */ - u_short cvc_downcnt; /* Down stack calls in progress */ - KBuffer *cvc_rcvq; /* Packet receive queue */ - int cvc_rcvqlen; /* Receive queue length */ - Atm_attributes cvc_attr; /* VCC attributes */ - struct atm_time cvc_time; /* Timer controls */ -}; -typedef struct atm_connvc Atm_connvc; - -/* - * Connection Flags - */ -#define CVCF_ABORTING 0x01 /* VCC abort is pending */ -#define CVCF_INCOMQ 0x02 /* VCC is on incoming queue */ -#define CVCF_CONNQ 0x04 /* VCC is on connection queue */ -#define CVCF_CALLER 0x08 /* We are the call originator */ - -/* - * Connection Manager <-> VCC States - */ -#define CVCS_FREE 0 /* Not allocated */ -#define CVCS_SETUP 1 /* Call setup pending */ -#define CVCS_INIT 2 /* Stack INIT pending */ -#define CVCS_INCOMING 3 /* Incoming call present */ -#define CVCS_ACCEPT 4 /* Incoming call accepted */ -#define CVCS_REJECT 5 /* Incoming call rejected */ -#define CVCS_ACTIVE 6 /* Stack active */ -#define CVCS_RELEASE 7 /* Connection release pending */ -#define CVCS_CLEAR 8 /* Call has been cleared */ -#define CVCS_TERM 9 /* Stack TERM pending */ - - -/* - * Connection VCC variables - */ -#define CVC_RCVQ_MAX 3 /* Max length of receive queue */ - - -/* - * Timer macros - */ -#define CVC_TIMER(s, t) atm_timeout(&(s)->cvc_time, (t), atm_cm_timeout) -#define CVC_CANCEL(s) atm_untimeout(&(s)->cvc_time) - - -/* - * Connection Manager Statistics - */ -struct atm_cm_stat { - u_long cms_llcdrop; /* Packets dropped by llc demux'ing */ - u_long cms_llcid; /* Packets with unknown llc id */ - u_long cms_rcvconn; /* Packets dropped, bad conn state */ - u_long cms_rcvconnvc; /* Packets dropped, bad connvc state */ -}; - -void atm_cm_init(void); - -#endif /* _KERNEL */ - -#endif /* _NETATM_ATM_CM_H */ |