summaryrefslogtreecommitdiffstats
path: root/sys/contrib/ngatm/netnatm/api/atmapi.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/ngatm/netnatm/api/atmapi.h')
-rw-r--r--sys/contrib/ngatm/netnatm/api/atmapi.h291
1 files changed, 291 insertions, 0 deletions
diff --git a/sys/contrib/ngatm/netnatm/api/atmapi.h b/sys/contrib/ngatm/netnatm/api/atmapi.h
new file mode 100644
index 0000000..887f548
--- /dev/null
+++ b/sys/contrib/ngatm/netnatm/api/atmapi.h
@@ -0,0 +1,291 @@
+/*
+ * Copyright (c) 2003-2004
+ * Hartmut Brandt
+ * All rights reserved.
+ *
+ * Copyright (c) 2001-2002
+ * Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+ * All rights reserved.
+ *
+ * Author: Harti Brandt <harti@freebsd.org>
+ *
+ * Redistribution of this software and documentation and use in source and
+ * binary forms, with or without modification, are permitted provided that
+ * the following conditions are met:
+ *
+ * 1. Redistributions of source code or documentation must retain the above
+ * copyright notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY THE AUTHORS
+ * AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ * THE AUTHORS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+ * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $Begemot: libunimsg/netnatm/api/atmapi.h,v 1.1 2004/07/08 08:21:48 brandt Exp $
+ *
+ * ATM API as defined per af-saa-0108
+ */
+#ifndef _NETNATM_API_ATMAPI_H_
+#define _NETNATM_API_ATMAPI_H_
+
+#include <sys/types.h>
+
+/* size of an endpointlen including trailing \0 */
+#define ATM_EPNAMSIZ 65
+
+enum atmstate {
+ ATM_A0, /* non existent */
+ ATM_A1, /* initial */
+ ATM_A2, /* outgoing call preparation */
+ ATM_A3, /* outgoing call requested */
+ ATM_A4, /* incoming call preparation */
+ ATM_A5, /* wait incoming call */
+ ATM_A6, /* incoming call present */
+ ATM_A7, /* incoming call requested */
+ ATM_A8, /* p2p data transfer */
+ ATM_A9, /* p2mp root data transfer */
+ ATM_A10, /* p2mp leaf data transfer */
+ ATM_A11, /* terminated */
+};
+
+enum atmop {
+ ATMOP_RESP, /* 0 */
+ ATMOP_ABORT_CONNECTION,
+ ATMOP_ACCEPT_INCOMING_CALL,
+ ATMOP_ADD_PARTY,
+ ATMOP_ADD_PARTY_REJECT,
+ ATMOP_ADD_PARTY_SUCCESS, /* 5 */
+ ATMOP_ARRIVAL_OF_INCOMING_CALL,
+ ATMOP_CALL_RELEASE,
+ ATMOP_CONNECT_OUTGOING_CALL,
+ ATMOP_DROP_PARTY,
+ ATMOP_GET_LOCAL_PORT_INFO, /* 10 */
+ ATMOP_P2MP_CALL_ACTIVE,
+ ATMOP_P2P_CALL_ACTIVE,
+ ATMOP_PREPARE_INCOMING_CALL,
+ ATMOP_PREPARE_OUTGOING_CALL,
+ ATMOP_QUERY_CONNECTION_ATTRIBUTES, /* 15 */
+ ATMOP_REJECT_INCOMING_CALL,
+ ATMOP_SET_CONNECTION_ATTRIBUTES,
+ ATMOP_WAIT_ON_INCOMING_CALL,
+ ATMOP_SET_CONNECTION_ATTRIBUTES_X,
+ ATMOP_QUERY_CONNECTION_ATTRIBUTES_X, /* 20 */
+ ATMOP_QUERY_STATE,
+};
+
+#define ATM_DEFINE_ERRORS \
+ DEF(ATMERR_OK, 0, "OK") \
+ DEF(ATMERR_SYS, -1, "syscall error") \
+ DEF(ATMERR_BAD_OP, -2, "bad operation") \
+ DEF(ATMERR_BAD_ARGS, -3, "bad arguments for operation") \
+ DEF(ATMERR_BAD_STATE, -4, "operation in bad state") \
+ DEF(ATMERR_BAD_ATTR, -5, "unknown attribute") \
+ DEF(ATMERR_BAD_VALUE, -6, "bad attribute value") \
+ DEF(ATMERR_BUSY, -7, "busy") \
+ DEF(ATMERR_RDONLY, -8, "read-only attribute") \
+ DEF(ATMERR_BAD_SAP, -9, "bad SAP") \
+ DEF(ATMERR_OVERLAP, -10,"overlaping SAP") \
+ DEF(ATMERR_BAD_ENDPOINT, -11,"bad ATM endpoint") \
+ DEF(ATMERR_PREVIOUSLY_ABORTED,-12,"previously aborted") \
+ DEF(ATMERR_NO_CALL, -13,"no incoming call") \
+ DEF(ATMERR_BAD_LEAF_IDENT, -14,"bad leaf identifier") \
+ DEF(ATMERR_BAD_PORT, -15,"unknown port") \
+ DEF(ATMERR_BAD_SIGNAL, -29-UNIAPI_ERROR_BAD_SIGNAL, "bad signal")\
+ DEF(ATMERR_BADCU, -29-UNIAPI_ERROR_BADCU, "bad coordinator state")\
+ DEF(ATMERR_BAD_CALLSTATE, -29-UNIAPI_ERROR_BAD_CALLSTATE, "bad call state")\
+ DEF(ATMERR_BAD_EPSTATE, -29-UNIAPI_ERROR_BAD_EPSTATE, "bad party state")\
+ DEF(ATMERR_BAD_UNIARG, -29-UNIAPI_ERROR_BAD_ARG, "bad uni argument")\
+ DEF(ATMERR_BAD_CALL, -29-UNIAPI_ERROR_BAD_CALL, "unknown call")\
+ DEF(ATMERR_BAD_PARTY, -29-UNIAPI_ERROR_BAD_PARTY, "unknown party")\
+ DEF(ATMERR_BAD_CTYPE, -29-UNIAPI_ERROR_BAD_CTYPE, "wrong call type")\
+ DEF(ATMERR_BAD_IE, -29-UNIAPI_ERROR_BAD_IE, "bad information element")\
+ DEF(ATMERR_EPREF_INUSE, -29-UNIAPI_ERROR_EPREF_INUSE, "endpoint reference in use")\
+ DEF(ATMERR_MISSING_IE, -29-UNIAPI_ERROR_MISSING_IE, "missing information element")\
+ DEF(ATMERR_ENCODING, -29-UNIAPI_ERROR_ENCODING, "encoding error")\
+ DEF(ATMERR_NOMEM, -29-UNIAPI_ERROR_NOMEM, "no memory")\
+ DEF(ATMERR_UNIBUSY, -29-UNIAPI_ERROR_BUSY, "uni process busy")
+
+#define ATM_MKUNIERR(E) (-29 - (E))
+
+enum atm_error {
+#define DEF(NAME,VAL,STR) NAME = (VAL),
+ATM_DEFINE_ERRORS
+#undef DEF
+};
+
+enum atm_attribute {
+ ATM_ATTR_NONE = 0,
+ ATM_ATTR_BLLI_SELECTOR,
+ ATM_ATTR_BLLI,
+ ATM_ATTR_BEARER,
+ ATM_ATTR_TRAFFIC,
+ ATM_ATTR_QOS,
+ ATM_ATTR_EXQOS,
+ ATM_ATTR_CALLED,
+ ATM_ATTR_CALLEDSUB,
+ ATM_ATTR_CALLING,
+ ATM_ATTR_CALLINGSUB,
+ ATM_ATTR_AAL,
+ ATM_ATTR_EPREF,
+ ATM_ATTR_CONNED,
+ ATM_ATTR_CONNEDSUB,
+ ATM_ATTR_EETD,
+ ATM_ATTR_ABRSETUP,
+ ATM_ATTR_ABRADD,
+ ATM_ATTR_CONNID,
+ ATM_ATTR_MDCR,
+};
+
+struct atm_resp {
+ int32_t resp;
+ uint32_t data; /* type of attached data */
+};
+enum {
+ ATMRESP_NONE, /* no data */
+ ATMRESP_ATTRS, /* attribute(s) */
+ ATMRESP_PORTS, /* port info */
+ ATMRESP_STATE, /* endpoint state */
+ ATMRESP_EXSTAT, /* extended status */
+};
+
+struct atm_abort_connection {
+ struct uni_ie_cause cause;
+};
+
+struct atm_query_connection_attributes {
+ uint32_t attr;
+};
+struct atm_set_connection_attributes {
+ uint32_t attr;
+};
+struct atm_query_connection_attributes_x {
+ uint32_t count;
+#if defined(__GNUC__) && __GNUC__ < 3
+ uint32_t attr[0];
+#else
+ uint32_t attr[];
+#endif
+};
+struct atm_set_connection_attributes_x {
+ uint32_t count;
+#if defined(__GNUC__) && __GNUC__ < 3
+ uint32_t attr[0];
+#else
+ uint32_t attr[];
+#endif
+};
+struct atm_prepare_incoming_call {
+ struct uni_sap sap;
+ uint32_t queue_size;
+};
+struct atm_connect_outgoing_call {
+ struct uni_ie_called called;
+};
+struct atm_call_release {
+ struct uni_ie_cause cause[2];
+};
+struct atm_p2p_call_active {
+ struct uni_ie_connid connid;
+};
+struct atm_p2mp_call_active {
+ struct uni_ie_connid connid;
+};
+struct atm_accept_incoming_call {
+ char newep[ATM_EPNAMSIZ];
+};
+struct atm_reject_incoming_call {
+ struct uni_ie_cause cause;
+};
+struct atm_add_party {
+ uint16_t leaf_ident;
+ struct uni_ie_called called;
+};
+struct atm_add_party_success {
+ uint16_t leaf_ident;
+};
+struct atm_add_party_reject {
+ uint16_t leaf_ident;
+ struct uni_ie_cause cause;
+};
+struct atm_drop_party {
+ uint16_t leaf_ident;
+ struct uni_ie_cause cause;
+};
+
+/*
+ * Get local port info. If port is 0, information on all ports is returned,
+ * otherwise only on the named port.
+ * The response consists of a header with two counters, a list of ports
+ * (struct atm_port_info) and a list of addresses (struct uni_addr).
+ * The port to which an address belongs is implicit in the num_addrs field
+ * of the port.
+ */
+struct atm_get_local_port_info {
+ uint32_t port;
+};
+
+struct atm_port_list {
+ uint32_t num_ports; /* number of ports */
+ uint32_t num_addrs; /* total number of addresses */
+};
+
+struct atm_port_info {
+ uint32_t port;
+ uint32_t pcr;
+ 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;
+ u_char esi[6];
+ uint32_t num_addrs; /* number of addresses on this port */
+};
+
+/*
+ * Endpoint state info
+ */
+struct atm_epstate {
+ char name[ATM_EPNAMSIZ];
+ uint8_t state;
+};
+
+/*
+ * Extended status information.
+ */
+struct atm_exstatus {
+ uint32_t neps; /* endpoints */
+ uint32_t nports; /* ports */
+ uint32_t nconns; /* connections */
+ uint32_t nparties; /* number of parties */
+};
+struct atm_exstatus_ep {
+ char name[ATM_EPNAMSIZ];
+ uint8_t state; /* Ux */
+};
+struct atm_exstatus_port {
+ uint32_t portno;
+ uint8_t state;
+};
+struct atm_exstatus_conn {
+ uint32_t id;
+ uint32_t cref; /* (flag << 23) | cref */
+ uint32_t port;
+ char ep[ATM_EPNAMSIZ]; /* \0 - none */
+ uint8_t state; /* Cx */
+};
+struct atm_exstatus_party {
+ uint32_t connid;
+ uint16_t epref;
+ uint8_t state; /* Px */
+};
+#endif
OpenPOWER on IntegriCloud