aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/ngatm/netnatm/msg/uni_hdr.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/ngatm/netnatm/msg/uni_hdr.h')
-rw-r--r--sys/contrib/ngatm/netnatm/msg/uni_hdr.h220
1 files changed, 220 insertions, 0 deletions
diff --git a/sys/contrib/ngatm/netnatm/msg/uni_hdr.h b/sys/contrib/ngatm/netnatm/msg/uni_hdr.h
new file mode 100644
index 000000000000..c9a30f12be5d
--- /dev/null
+++ b/sys/contrib/ngatm/netnatm/msg/uni_hdr.h
@@ -0,0 +1,220 @@
+/*
+ * Copyright (c) 1996-2003
+ * Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+ * All rights reserved.
+ *
+ * Redistribution 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 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 IS PROVIDED BY THE AUTHOR AND 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 AUTHOR OR 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.
+ *
+ * Author: Hartmut Brandt <harti@freebsd.org>
+ *
+ * $Begemot: libunimsg/netnatm/msg/uni_hdr.h,v 1.6 2004/07/08 08:22:05 brandt Exp $
+ */
+#ifndef _NETNATM_MSG_UNI_HDR_H_
+#define _NETNATM_MSG_UNI_HDR_H_
+
+#include <sys/types.h>
+#ifdef _KERNEL
+#include <sys/stdint.h>
+#else
+#include <stdint.h>
+#endif
+
+#include <netnatm/msg/uni_config.h>
+
+enum {
+ UNI_PROTO = 0x09, /* protocol discriminator */
+ PNNI_PROTO = 0xf0, /* PNNI protocol discriminator */
+};
+
+/*
+ * Message types
+ */
+enum uni_msgtype {
+ UNI_UNKNOWN = 0x100,/* unknown message */
+
+ UNI_ALERTING = 0x01, /* alerting */
+ UNI_CALL_PROC = 0x02, /* call proceeding */
+ UNI_SETUP = 0x05, /* setup */
+ UNI_CONNECT = 0x07, /* connect */
+ UNI_CONNECT_ACK = 0x0f, /* connect ack */
+
+ UNI_RESTART = 0x46, /* restart */
+ UNI_RELEASE = 0x4d, /* release */
+ UNI_RESTART_ACK = 0x4e, /* restart acknowledgement */
+ UNI_RELEASE_COMPL = 0x5a, /* release complete */
+
+ UNI_NOTIFY = 0x6e, /* notify user */
+ UNI_STATUS_ENQ = 0x75, /* status enquiry */
+ UNI_STATUS = 0x7d, /* status */
+
+ UNI_ADD_PARTY = 0x80, /* add party */
+ UNI_ADD_PARTY_ACK = 0x81, /* add party acknowledgement */
+ UNI_ADD_PARTY_REJ = 0x82, /* add party reject */
+ UNI_DROP_PARTY = 0x83, /* drop party */
+ UNI_DROP_PARTY_ACK = 0x84, /* drop party acknowledgement */
+ UNI_PARTY_ALERTING = 0x85, /* party alerting */
+
+ UNI_LEAF_SETUP_FAIL = 0x90, /* leaf setup failed */
+ UNI_LEAF_SETUP_REQ = 0x91, /* leaf setup request */
+
+ UNI_COBISETUP = 0x15, /* Q.2932 COBI-setup */
+ UNI_FACILITY = 0x62, /* Q.2932 facility */
+
+ UNI_MODIFY_REQ = 0x88, /* Q.2963 Modify request */
+ UNI_MODIFY_ACK = 0x89, /* Q.2963 Modify acknowledgement */
+ UNI_MODIFY_REJ = 0x8a, /* Q.2963 Modify reject */
+ UNI_CONN_AVAIL = 0x8b, /* Q.2963 Connection available */
+};
+
+/*
+ * Information element types
+ */
+enum uni_ietype {
+ UNI_IE_CAUSE = 0x08, /* cause */
+ UNI_IE_CALLSTATE = 0x14, /* call state */
+ UNI_IE_FACILITY = 0x1C, /* Q.2932 facility IE */
+ UNI_IE_NOTIFY = 0x27, /* UNI4.0 notify */
+ UNI_IE_EETD = 0x42, /* UNI4.0 end-to-end transit delay */
+ UNI_IE_CONNED = 0x4c, /* UNI4.0/Q.2951 connected address */
+ UNI_IE_CONNEDSUB = 0x4d, /* UNI4.0/Q.2951 connected subaddress */
+ UNI_IE_EPREF = 0x54, /* endpoint reference */
+ UNI_IE_EPSTATE = 0x55, /* enpoint state */
+ UNI_IE_AAL = 0x58, /* ATM adaptation layer parameters */
+ UNI_IE_TRAFFIC = 0x59, /* ATM traffic descriptor */
+ UNI_IE_CONNID = 0x5a, /* connection identifier */
+ UNI_IE_QOS = 0x5c, /* quality of service parameter */
+ UNI_IE_BHLI = 0x5d, /* broadband higher layer information */
+ UNI_IE_BEARER = 0x5e, /* broadband bearer capability */
+ UNI_IE_BLLI = 0x5f, /* broadband lower layer information */
+ UNI_IE_LSHIFT = 0x60, /* broadband locking shift */
+ UNI_IE_NLSHIFT = 0x61, /* broadband non-locking shift */
+ UNI_IE_SCOMPL = 0x62, /* broadband sending complete */
+ UNI_IE_REPEAT = 0x63, /* broadband repeat indicator */
+ UNI_IE_CALLING = 0x6c, /* calling party number */
+ UNI_IE_CALLINGSUB = 0x6d, /* calling party subaddress */
+ UNI_IE_CALLED = 0x70, /* called party number */
+ UNI_IE_CALLEDSUB = 0x71, /* called party subaddress */
+ UNI_IE_TNS = 0x78, /* transit network selection */
+ UNI_IE_RESTART = 0x79, /* restart indicator */
+ UNI_IE_UU = 0x7e, /* UNI4.0/Q.2957 user-to-user info */
+ UNI_IE_GIT = 0x7f, /* UNI4.0 generic identifier transport*/
+ UNI_IE_MINTRAFFIC = 0x81, /* Q.2962 minimum traffic desc */
+ UNI_IE_ATRAFFIC = 0x82, /* Q.2962 alternate traffic desc */
+ UNI_IE_ABRSETUP = 0x84, /* UNI4.0 ABR setup parameters */
+ UNI_IE_REPORT = 0x89, /* Q.2963 broadband report type */
+ UNI_IE_CALLED_SOFT = 0xe0, /* PNNI Calling party soft PVPC */
+ UNI_IE_CRANKBACK = 0xe1, /* PNNI Crankback */
+ UNI_IE_DTL = 0xe2, /* PNNI designated transit list */
+ UNI_IE_CALLING_SOFT = 0xe3, /* PNNI Called party soft PVPC */
+ UNI_IE_ABRADD = 0xe4, /* UNI4.0 ABR additional parameters */
+ UNI_IE_LIJ_CALLID = 0xe8, /* UNI4.0 LIF call identifier */
+ UNI_IE_LIJ_PARAM = 0xe9, /* UNI4.0 LIF parameters */
+ UNI_IE_LIJ_SEQNO = 0xea, /* UNI4.0 LIF sequence number */
+ UNI_IE_CSCOPE = 0xeb, /* UNI4.0 connection scope selection */
+ UNI_IE_EXQOS = 0xec, /* UNI4.0 extended QoS parameters */
+ UNI_IE_MDCR = 0xf0, /* UNI4.0+ Minimum desired call rate */
+ UNI_IE_UNREC = 0xfe,
+};
+
+enum uni_coding {
+ UNI_CODING_ITU = 0x0,
+ UNI_CODING_NET = 0x3,
+};
+
+enum uni_msgact {
+ UNI_MSGACT_CLEAR = 0x0,
+ UNI_MSGACT_IGNORE = 0x1,
+ UNI_MSGACT_REPORT = 0x2,
+
+ UNI_MSGACT_DEFAULT = 0x4
+};
+
+enum uni_ieact {
+ UNI_IEACT_CLEAR = 0x00, /* clear call */
+ UNI_IEACT_IGNORE = 0x01, /* ignore IE and proceed */
+ UNI_IEACT_REPORT = 0x02, /* ignore IE, report and proceed */
+ UNI_IEACT_MSG_IGNORE = 0x05, /* ignore message */
+ UNI_IEACT_MSG_REPORT = 0x06, /* ignore message and report */
+
+ UNI_IEACT_DEFAULT = 0x08
+};
+
+struct uni_cref {
+ u_int flag;
+ u_int cref;
+};
+
+/*
+ * Message header.
+ */
+struct uni_msghdr {
+ struct uni_cref cref;
+ enum uni_msgact act; /* action indicator */
+ u_int pass:1; /* PNNI pass along request */
+};
+
+enum {
+ CREF_GLOBAL = 0,
+ CREF_DUMMY = 0x7fffff,
+};
+
+/*
+ * General information element header.
+ */
+struct uni_iehdr {
+ enum uni_coding coding; /* coding standard */
+ enum uni_ieact act; /* action indicator */
+ u_int pass : 1; /* PNNI pass along request */
+ u_int present; /* which optional elements are present */
+#define UNI_IE_EMPTY 0x80000000
+#define UNI_IE_PRESENT 0x40000000
+#define UNI_IE_ERROR 0x20000000
+#define UNI_IE_XXX 0x10000000
+#define UNI_IE_MASK 0xf0000000
+};
+
+#define IE_ISPRESENT(IE) \
+ (((IE).h.present & (UNI_IE_PRESENT|UNI_IE_EMPTY)) == UNI_IE_PRESENT)
+#define IE_SETPRESENT(IE) \
+ ((IE).h.present = ((IE).h.present & ~UNI_IE_MASK) | \
+ UNI_IE_PRESENT)
+
+#define IE_ADDPRESENT(IE) \
+ ((IE).h.present = ((IE).h.present & ~UNI_IE_EMPTY) | \
+ UNI_IE_PRESENT)
+
+#define IE_ISEMPTY(IE) \
+ (((IE).h.present & UNI_IE_MASK) == (UNI_IE_PRESENT | UNI_IE_EMPTY))
+#define IE_SETEMPTY(IE) \
+ ((IE).h.present = ((IE).h.present & ~UNI_IE_MASK) | \
+ UNI_IE_EMPTY | UNI_IE_PRESENT)
+
+#define IE_ISERROR(IE) \
+ (((IE).h.present & UNI_IE_MASK) == (UNI_IE_PRESENT | UNI_IE_ERROR))
+#define IE_SETERROR(IE) \
+ ((IE).h.present = ((IE).h.present & ~UNI_IE_MASK) | \
+ UNI_IE_ERROR | UNI_IE_PRESENT)
+
+#define IE_ISGOOD(IE) \
+ (((IE).h.present & UNI_IE_MASK) == (UNI_IE_PRESENT))
+
+#endif