1131826Sharti/* 2131826Sharti * Copyright (c) 2003-2004 3131826Sharti * Hartmut Brandt 4131826Sharti * All rights reserved. 5131826Sharti * 6131826Sharti * Copyright (c) 2001-2002 7131826Sharti * Fraunhofer Institute for Open Communication Systems (FhG Fokus). 8131826Sharti * All rights reserved. 9131826Sharti * 10131826Sharti * Author: Harti Brandt <harti@freebsd.org> 11131826Sharti * 12131826Sharti * Redistribution of this software and documentation and use in source and 13131826Sharti * binary forms, with or without modification, are permitted provided that 14131826Sharti * the following conditions are met: 15131826Sharti * 16131826Sharti * 1. Redistributions of source code or documentation must retain the above 17131826Sharti * copyright notice, this list of conditions and the following disclaimer. 18131826Sharti * 2. Redistributions in binary form must reproduce the above copyright 19131826Sharti * notice, this list of conditions and the following disclaimer in the 20131826Sharti * documentation and/or other materials provided with the distribution. 21131826Sharti * 22131826Sharti * THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY THE AUTHORS 23131826Sharti * AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 24131826Sharti * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 25131826Sharti * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 26131826Sharti * THE AUTHORS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 27131826Sharti * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 28131826Sharti * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 29131826Sharti * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 30131826Sharti * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 31131826Sharti * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 32131826Sharti * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33131826Sharti * 34131826Sharti * $Begemot: libunimsg/netnatm/api/atmapi.h,v 1.1 2004/07/08 08:21:48 brandt Exp $ 35131826Sharti * 36131826Sharti * ATM API as defined per af-saa-0108 37131826Sharti */ 38131826Sharti#ifndef _NETNATM_API_ATMAPI_H_ 39131826Sharti#define _NETNATM_API_ATMAPI_H_ 40131826Sharti 41131826Sharti#include <sys/types.h> 42131826Sharti 43131826Sharti/* size of an endpointlen including trailing \0 */ 44131826Sharti#define ATM_EPNAMSIZ 65 45131826Sharti 46131826Shartienum atmstate { 47131826Sharti ATM_A0, /* non existent */ 48131826Sharti ATM_A1, /* initial */ 49131826Sharti ATM_A2, /* outgoing call preparation */ 50131826Sharti ATM_A3, /* outgoing call requested */ 51131826Sharti ATM_A4, /* incoming call preparation */ 52131826Sharti ATM_A5, /* wait incoming call */ 53131826Sharti ATM_A6, /* incoming call present */ 54131826Sharti ATM_A7, /* incoming call requested */ 55131826Sharti ATM_A8, /* p2p data transfer */ 56131826Sharti ATM_A9, /* p2mp root data transfer */ 57131826Sharti ATM_A10, /* p2mp leaf data transfer */ 58131826Sharti ATM_A11, /* terminated */ 59131826Sharti}; 60131826Sharti 61131826Shartienum atmop { 62131826Sharti ATMOP_RESP, /* 0 */ 63131826Sharti ATMOP_ABORT_CONNECTION, 64131826Sharti ATMOP_ACCEPT_INCOMING_CALL, 65131826Sharti ATMOP_ADD_PARTY, 66131826Sharti ATMOP_ADD_PARTY_REJECT, 67131826Sharti ATMOP_ADD_PARTY_SUCCESS, /* 5 */ 68131826Sharti ATMOP_ARRIVAL_OF_INCOMING_CALL, 69131826Sharti ATMOP_CALL_RELEASE, 70131826Sharti ATMOP_CONNECT_OUTGOING_CALL, 71131826Sharti ATMOP_DROP_PARTY, 72131826Sharti ATMOP_GET_LOCAL_PORT_INFO, /* 10 */ 73131826Sharti ATMOP_P2MP_CALL_ACTIVE, 74131826Sharti ATMOP_P2P_CALL_ACTIVE, 75131826Sharti ATMOP_PREPARE_INCOMING_CALL, 76131826Sharti ATMOP_PREPARE_OUTGOING_CALL, 77131826Sharti ATMOP_QUERY_CONNECTION_ATTRIBUTES, /* 15 */ 78131826Sharti ATMOP_REJECT_INCOMING_CALL, 79131826Sharti ATMOP_SET_CONNECTION_ATTRIBUTES, 80131826Sharti ATMOP_WAIT_ON_INCOMING_CALL, 81131826Sharti ATMOP_SET_CONNECTION_ATTRIBUTES_X, 82131826Sharti ATMOP_QUERY_CONNECTION_ATTRIBUTES_X, /* 20 */ 83131826Sharti ATMOP_QUERY_STATE, 84131826Sharti}; 85131826Sharti 86131826Sharti#define ATM_DEFINE_ERRORS \ 87131826Sharti DEF(ATMERR_OK, 0, "OK") \ 88131826Sharti DEF(ATMERR_SYS, -1, "syscall error") \ 89131826Sharti DEF(ATMERR_BAD_OP, -2, "bad operation") \ 90131826Sharti DEF(ATMERR_BAD_ARGS, -3, "bad arguments for operation") \ 91131826Sharti DEF(ATMERR_BAD_STATE, -4, "operation in bad state") \ 92131826Sharti DEF(ATMERR_BAD_ATTR, -5, "unknown attribute") \ 93131826Sharti DEF(ATMERR_BAD_VALUE, -6, "bad attribute value") \ 94131826Sharti DEF(ATMERR_BUSY, -7, "busy") \ 95131826Sharti DEF(ATMERR_RDONLY, -8, "read-only attribute") \ 96131826Sharti DEF(ATMERR_BAD_SAP, -9, "bad SAP") \ 97131826Sharti DEF(ATMERR_OVERLAP, -10,"overlaping SAP") \ 98131826Sharti DEF(ATMERR_BAD_ENDPOINT, -11,"bad ATM endpoint") \ 99131826Sharti DEF(ATMERR_PREVIOUSLY_ABORTED,-12,"previously aborted") \ 100131826Sharti DEF(ATMERR_NO_CALL, -13,"no incoming call") \ 101131826Sharti DEF(ATMERR_BAD_LEAF_IDENT, -14,"bad leaf identifier") \ 102131826Sharti DEF(ATMERR_BAD_PORT, -15,"unknown port") \ 103131826Sharti DEF(ATMERR_BAD_SIGNAL, -29-UNIAPI_ERROR_BAD_SIGNAL, "bad signal")\ 104131826Sharti DEF(ATMERR_BADCU, -29-UNIAPI_ERROR_BADCU, "bad coordinator state")\ 105131826Sharti DEF(ATMERR_BAD_CALLSTATE, -29-UNIAPI_ERROR_BAD_CALLSTATE, "bad call state")\ 106131826Sharti DEF(ATMERR_BAD_EPSTATE, -29-UNIAPI_ERROR_BAD_EPSTATE, "bad party state")\ 107131826Sharti DEF(ATMERR_BAD_UNIARG, -29-UNIAPI_ERROR_BAD_ARG, "bad uni argument")\ 108131826Sharti DEF(ATMERR_BAD_CALL, -29-UNIAPI_ERROR_BAD_CALL, "unknown call")\ 109131826Sharti DEF(ATMERR_BAD_PARTY, -29-UNIAPI_ERROR_BAD_PARTY, "unknown party")\ 110131826Sharti DEF(ATMERR_BAD_CTYPE, -29-UNIAPI_ERROR_BAD_CTYPE, "wrong call type")\ 111131826Sharti DEF(ATMERR_BAD_IE, -29-UNIAPI_ERROR_BAD_IE, "bad information element")\ 112131826Sharti DEF(ATMERR_EPREF_INUSE, -29-UNIAPI_ERROR_EPREF_INUSE, "endpoint reference in use")\ 113131826Sharti DEF(ATMERR_MISSING_IE, -29-UNIAPI_ERROR_MISSING_IE, "missing information element")\ 114131826Sharti DEF(ATMERR_ENCODING, -29-UNIAPI_ERROR_ENCODING, "encoding error")\ 115131826Sharti DEF(ATMERR_NOMEM, -29-UNIAPI_ERROR_NOMEM, "no memory")\ 116131826Sharti DEF(ATMERR_UNIBUSY, -29-UNIAPI_ERROR_BUSY, "uni process busy") 117131826Sharti 118131826Sharti#define ATM_MKUNIERR(E) (-29 - (E)) 119131826Sharti 120131826Shartienum atm_error { 121131826Sharti#define DEF(NAME,VAL,STR) NAME = (VAL), 122131826ShartiATM_DEFINE_ERRORS 123131826Sharti#undef DEF 124131826Sharti}; 125131826Sharti 126131826Shartienum atm_attribute { 127131826Sharti ATM_ATTR_NONE = 0, 128131826Sharti ATM_ATTR_BLLI_SELECTOR, 129131826Sharti ATM_ATTR_BLLI, 130131826Sharti ATM_ATTR_BEARER, 131131826Sharti ATM_ATTR_TRAFFIC, 132131826Sharti ATM_ATTR_QOS, 133131826Sharti ATM_ATTR_EXQOS, 134131826Sharti ATM_ATTR_CALLED, 135131826Sharti ATM_ATTR_CALLEDSUB, 136131826Sharti ATM_ATTR_CALLING, 137131826Sharti ATM_ATTR_CALLINGSUB, 138131826Sharti ATM_ATTR_AAL, 139131826Sharti ATM_ATTR_EPREF, 140131826Sharti ATM_ATTR_CONNED, 141131826Sharti ATM_ATTR_CONNEDSUB, 142131826Sharti ATM_ATTR_EETD, 143131826Sharti ATM_ATTR_ABRSETUP, 144131826Sharti ATM_ATTR_ABRADD, 145131826Sharti ATM_ATTR_CONNID, 146131826Sharti ATM_ATTR_MDCR, 147131826Sharti}; 148131826Sharti 149131826Shartistruct atm_resp { 150131826Sharti int32_t resp; 151131826Sharti uint32_t data; /* type of attached data */ 152131826Sharti}; 153131826Shartienum { 154131826Sharti ATMRESP_NONE, /* no data */ 155131826Sharti ATMRESP_ATTRS, /* attribute(s) */ 156131826Sharti ATMRESP_PORTS, /* port info */ 157131826Sharti ATMRESP_STATE, /* endpoint state */ 158131826Sharti ATMRESP_EXSTAT, /* extended status */ 159131826Sharti}; 160131826Sharti 161131826Shartistruct atm_abort_connection { 162131826Sharti struct uni_ie_cause cause; 163131826Sharti}; 164131826Sharti 165131826Shartistruct atm_query_connection_attributes { 166131826Sharti uint32_t attr; 167131826Sharti}; 168131826Shartistruct atm_set_connection_attributes { 169131826Sharti uint32_t attr; 170131826Sharti}; 171131826Shartistruct atm_query_connection_attributes_x { 172131826Sharti uint32_t count; 173131826Sharti#if defined(__GNUC__) && __GNUC__ < 3 174131826Sharti uint32_t attr[0]; 175131826Sharti#else 176131826Sharti uint32_t attr[]; 177131826Sharti#endif 178131826Sharti}; 179131826Shartistruct atm_set_connection_attributes_x { 180131826Sharti uint32_t count; 181131826Sharti#if defined(__GNUC__) && __GNUC__ < 3 182131826Sharti uint32_t attr[0]; 183131826Sharti#else 184131826Sharti uint32_t attr[]; 185131826Sharti#endif 186131826Sharti}; 187131826Shartistruct atm_prepare_incoming_call { 188131826Sharti struct uni_sap sap; 189131826Sharti uint32_t queue_size; 190131826Sharti}; 191131826Shartistruct atm_connect_outgoing_call { 192131826Sharti struct uni_ie_called called; 193131826Sharti}; 194131826Shartistruct atm_call_release { 195131826Sharti struct uni_ie_cause cause[2]; 196131826Sharti}; 197131826Shartistruct atm_p2p_call_active { 198131826Sharti struct uni_ie_connid connid; 199131826Sharti}; 200131826Shartistruct atm_p2mp_call_active { 201131826Sharti struct uni_ie_connid connid; 202131826Sharti}; 203131826Shartistruct atm_accept_incoming_call { 204131826Sharti char newep[ATM_EPNAMSIZ]; 205131826Sharti}; 206131826Shartistruct atm_reject_incoming_call { 207131826Sharti struct uni_ie_cause cause; 208131826Sharti}; 209131826Shartistruct atm_add_party { 210131826Sharti uint16_t leaf_ident; 211131826Sharti struct uni_ie_called called; 212131826Sharti}; 213131826Shartistruct atm_add_party_success { 214131826Sharti uint16_t leaf_ident; 215131826Sharti}; 216131826Shartistruct atm_add_party_reject { 217131826Sharti uint16_t leaf_ident; 218131826Sharti struct uni_ie_cause cause; 219131826Sharti}; 220131826Shartistruct atm_drop_party { 221131826Sharti uint16_t leaf_ident; 222131826Sharti struct uni_ie_cause cause; 223131826Sharti}; 224131826Sharti 225131826Sharti/* 226131826Sharti * Get local port info. If port is 0, information on all ports is returned, 227131826Sharti * otherwise only on the named port. 228131826Sharti * The response consists of a header with two counters, a list of ports 229131826Sharti * (struct atm_port_info) and a list of addresses (struct uni_addr). 230131826Sharti * The port to which an address belongs is implicit in the num_addrs field 231131826Sharti * of the port. 232131826Sharti */ 233131826Shartistruct atm_get_local_port_info { 234131826Sharti uint32_t port; 235131826Sharti}; 236131826Sharti 237131826Shartistruct atm_port_list { 238131826Sharti uint32_t num_ports; /* number of ports */ 239131826Sharti uint32_t num_addrs; /* total number of addresses */ 240131826Sharti}; 241131826Sharti 242131826Shartistruct atm_port_info { 243131826Sharti uint32_t port; 244131826Sharti uint32_t pcr; 245131826Sharti uint32_t max_vpi_bits; 246131826Sharti uint32_t max_vci_bits; 247131826Sharti uint32_t max_svpc_vpi; 248131826Sharti uint32_t max_svcc_vpi; 249131826Sharti uint32_t min_svcc_vci; 250131826Sharti u_char esi[6]; 251131826Sharti uint32_t num_addrs; /* number of addresses on this port */ 252131826Sharti}; 253131826Sharti 254131826Sharti/* 255131826Sharti * Endpoint state info 256131826Sharti */ 257131826Shartistruct atm_epstate { 258131826Sharti char name[ATM_EPNAMSIZ]; 259131826Sharti uint8_t state; 260131826Sharti}; 261131826Sharti 262131826Sharti/* 263131826Sharti * Extended status information. 264131826Sharti */ 265131826Shartistruct atm_exstatus { 266131826Sharti uint32_t neps; /* endpoints */ 267131826Sharti uint32_t nports; /* ports */ 268131826Sharti uint32_t nconns; /* connections */ 269131826Sharti uint32_t nparties; /* number of parties */ 270131826Sharti}; 271131826Shartistruct atm_exstatus_ep { 272131826Sharti char name[ATM_EPNAMSIZ]; 273131826Sharti uint8_t state; /* Ux */ 274131826Sharti}; 275131826Shartistruct atm_exstatus_port { 276131826Sharti uint32_t portno; 277131826Sharti uint8_t state; 278131826Sharti}; 279131826Shartistruct atm_exstatus_conn { 280131826Sharti uint32_t id; 281131826Sharti uint32_t cref; /* (flag << 23) | cref */ 282131826Sharti uint32_t port; 283131826Sharti char ep[ATM_EPNAMSIZ]; /* \0 - none */ 284131826Sharti uint8_t state; /* Cx */ 285131826Sharti}; 286131826Shartistruct atm_exstatus_party { 287131826Sharti uint32_t connid; 288131826Sharti uint16_t epref; 289131826Sharti uint8_t state; /* Px */ 290131826Sharti}; 291131826Sharti#endif 292