mirror of https://github.com/F-Stack/f-stack.git
623 lines
15 KiB
C
623 lines
15 KiB
C
|
/*
|
||
|
* Copyright (c) 2002-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>
|
||
|
* Kendy Kutzner <kutzner@fokus.fraunhofer.de>
|
||
|
*
|
||
|
* $Begemot: libunimsg/netnatm/sig/sig_print.c,v 1.6 2004/08/05 07:11:02 brandt Exp $
|
||
|
*/
|
||
|
|
||
|
#include <sys/types.h>
|
||
|
#ifdef _KERNEL
|
||
|
#include <sys/param.h>
|
||
|
#include <sys/systm.h>
|
||
|
#include <sys/libkern.h>
|
||
|
#include <machine/stdarg.h>
|
||
|
#else
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
#include <stdarg.h>
|
||
|
#endif
|
||
|
|
||
|
#include <netnatm/saal/sscfu.h>
|
||
|
#include <netnatm/msg/uni_hdr.h>
|
||
|
#include <netnatm/msg/unistruct.h>
|
||
|
#include <netnatm/msg/unimsglib.h>
|
||
|
#include <netnatm/msg/uniprint.h>
|
||
|
#include <netnatm/sig/uni.h>
|
||
|
#include <netnatm/sig/unisig.h>
|
||
|
#include <netnatm/sig/unidef.h>
|
||
|
|
||
|
const char *
|
||
|
uni_strerr(u_int err)
|
||
|
{
|
||
|
static const char *const errstr[] = {
|
||
|
#define DEF(NAME, VAL, STR) [UNIAPI_##NAME] = STR,
|
||
|
UNIAPI_DEF_ERRORS(DEF)
|
||
|
#undef DEF
|
||
|
};
|
||
|
static char buf[100];
|
||
|
|
||
|
if (err >= sizeof(errstr)/sizeof(errstr[0]) || errstr[err] == NULL) {
|
||
|
sprintf(buf, "Unknown error %u", err);
|
||
|
return (buf);
|
||
|
}
|
||
|
return (errstr[err]);
|
||
|
}
|
||
|
|
||
|
#define D(M) [M] = #M
|
||
|
static const char *const msgs[] = {
|
||
|
D(UNIAPI_ERROR),
|
||
|
D(UNIAPI_CALL_CREATED),
|
||
|
D(UNIAPI_CALL_DESTROYED),
|
||
|
D(UNIAPI_PARTY_CREATED),
|
||
|
D(UNIAPI_PARTY_DESTROYED),
|
||
|
D(UNIAPI_LINK_ESTABLISH_request),
|
||
|
D(UNIAPI_LINK_ESTABLISH_confirm),
|
||
|
D(UNIAPI_LINK_RELEASE_request),
|
||
|
D(UNIAPI_LINK_RELEASE_confirm),
|
||
|
D(UNIAPI_RESET_request),
|
||
|
D(UNIAPI_RESET_confirm),
|
||
|
D(UNIAPI_RESET_indication),
|
||
|
D(UNIAPI_RESET_ERROR_indication),
|
||
|
D(UNIAPI_RESET_response),
|
||
|
D(UNIAPI_RESET_ERROR_response),
|
||
|
D(UNIAPI_RESET_STATUS_indication),
|
||
|
D(UNIAPI_SETUP_request),
|
||
|
D(UNIAPI_SETUP_indication),
|
||
|
D(UNIAPI_SETUP_response),
|
||
|
D(UNIAPI_SETUP_confirm),
|
||
|
D(UNIAPI_SETUP_COMPLETE_indication),
|
||
|
D(UNIAPI_SETUP_COMPLETE_request),
|
||
|
D(UNIAPI_ALERTING_request),
|
||
|
D(UNIAPI_ALERTING_indication),
|
||
|
D(UNIAPI_PROCEEDING_request),
|
||
|
D(UNIAPI_PROCEEDING_indication),
|
||
|
D(UNIAPI_RELEASE_request),
|
||
|
D(UNIAPI_RELEASE_indication),
|
||
|
D(UNIAPI_RELEASE_response),
|
||
|
D(UNIAPI_RELEASE_confirm),
|
||
|
D(UNIAPI_NOTIFY_request),
|
||
|
D(UNIAPI_NOTIFY_indication),
|
||
|
D(UNIAPI_STATUS_indication),
|
||
|
D(UNIAPI_STATUS_ENQUIRY_request),
|
||
|
D(UNIAPI_ADD_PARTY_request),
|
||
|
D(UNIAPI_ADD_PARTY_indication),
|
||
|
D(UNIAPI_PARTY_ALERTING_request),
|
||
|
D(UNIAPI_PARTY_ALERTING_indication),
|
||
|
D(UNIAPI_ADD_PARTY_ACK_request),
|
||
|
D(UNIAPI_ADD_PARTY_ACK_indication),
|
||
|
D(UNIAPI_ADD_PARTY_REJ_request),
|
||
|
D(UNIAPI_ADD_PARTY_REJ_indication),
|
||
|
D(UNIAPI_DROP_PARTY_request),
|
||
|
D(UNIAPI_DROP_PARTY_indication),
|
||
|
D(UNIAPI_DROP_PARTY_ACK_request),
|
||
|
D(UNIAPI_DROP_PARTY_ACK_indication),
|
||
|
D(UNIAPI_ABORT_CALL_request),
|
||
|
};
|
||
|
#undef D
|
||
|
|
||
|
void
|
||
|
uni_print_api(char *buf, size_t bufsiz, u_int type, u_int cookie,
|
||
|
const void *msg, struct unicx *cx)
|
||
|
{
|
||
|
int old_dont_init = cx->dont_init;
|
||
|
|
||
|
uni_print_init(buf, bufsiz, cx);
|
||
|
cx->dont_init = 1;
|
||
|
|
||
|
if (type >= sizeof(msgs) / sizeof(msgs[0]) || msgs[type] == NULL) {
|
||
|
uni_print_flag("UNIAPI_UNKNOWN", cx);
|
||
|
uni_print_entry(cx, "sig", "%u", type);
|
||
|
uni_print_entry(cx, "cookie", "%u", cookie);
|
||
|
goto out;
|
||
|
}
|
||
|
|
||
|
uni_print_flag(msgs[type], cx);
|
||
|
uni_print_entry(cx, "cookie", "%u", cookie);
|
||
|
cx->indent++;
|
||
|
|
||
|
switch (type) {
|
||
|
|
||
|
case UNIAPI_ERROR:
|
||
|
{
|
||
|
const struct uniapi_error *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_entry(cx, "reason", "%s", uni_strerr(api->reason));
|
||
|
uni_print_entry(cx, "state", "U%u", api->state);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_CALL_CREATED:
|
||
|
{
|
||
|
const struct uniapi_call_created *api = msg;
|
||
|
|
||
|
uni_print_cref(NULL, 0, &api->cref, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_CALL_DESTROYED:
|
||
|
{
|
||
|
const struct uniapi_call_destroyed *api = msg;
|
||
|
|
||
|
uni_print_cref(NULL, 0, &api->cref, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_PARTY_CREATED:
|
||
|
{
|
||
|
const struct uniapi_party_created *api = msg;
|
||
|
|
||
|
uni_print_cref(NULL, 0, &api->cref, cx);
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_EPREF,
|
||
|
(const union uni_ieall *)&api->epref, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_PARTY_DESTROYED:
|
||
|
{
|
||
|
const struct uniapi_party_destroyed *api = msg;
|
||
|
|
||
|
uni_print_cref(NULL, 0, &api->cref, cx);
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_EPREF,
|
||
|
(const union uni_ieall *)&api->epref, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_LINK_ESTABLISH_request:
|
||
|
case UNIAPI_LINK_ESTABLISH_confirm:
|
||
|
case UNIAPI_LINK_RELEASE_request:
|
||
|
case UNIAPI_LINK_RELEASE_confirm:
|
||
|
break;
|
||
|
|
||
|
case UNIAPI_RESET_request:
|
||
|
{
|
||
|
const struct uniapi_reset_request *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_RESTART,
|
||
|
(const union uni_ieall *)&api->restart, cx);
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_CONNID,
|
||
|
(const union uni_ieall *)&api->restart, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_RESET_confirm:
|
||
|
{
|
||
|
const struct uniapi_reset_confirm *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_RESTART,
|
||
|
(const union uni_ieall *)&api->restart, cx);
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_CONNID,
|
||
|
(const union uni_ieall *)&api->restart, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_RESET_indication:
|
||
|
{
|
||
|
const struct uniapi_reset_indication *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_RESTART,
|
||
|
(const union uni_ieall *)&api->restart, cx);
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_CONNID,
|
||
|
(const union uni_ieall *)&api->restart, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_RESET_ERROR_indication:
|
||
|
{
|
||
|
const struct uniapi_reset_error_indication *api = msg;
|
||
|
static const struct uni_print_tbl reason[] = {
|
||
|
#define DEF(NAME, VALUE, STR) { STR, VALUE },
|
||
|
UNIAPI_DEF_RESET_ERRORS(DEF)
|
||
|
#undef DEF
|
||
|
{ NULL, 0 }
|
||
|
};
|
||
|
static const struct uni_print_tbl source[] = {
|
||
|
{ "start", 0 },
|
||
|
{ "respond", 1 },
|
||
|
{ NULL, 0 }
|
||
|
};
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_tbl("source", api->source, source, cx);
|
||
|
uni_print_tbl("reason", api->reason, reason, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_RESET_response:
|
||
|
{
|
||
|
const struct uniapi_reset_response *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_RESTART,
|
||
|
(const union uni_ieall *)&api->restart, cx);
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_CONNID,
|
||
|
(const union uni_ieall *)&api->restart, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_RESET_ERROR_response:
|
||
|
{
|
||
|
const struct uniapi_reset_error_response *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_CAUSE,
|
||
|
(const union uni_ieall *)&api->cause, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_RESET_STATUS_indication:
|
||
|
{
|
||
|
const struct uniapi_reset_status_indication *api = msg;
|
||
|
|
||
|
uni_print_cref(NULL, 0, &api->cref, cx);
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_CALLSTATE,
|
||
|
(const union uni_ieall *)&api->callstate, cx);
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_CAUSE,
|
||
|
(const union uni_ieall *)&api->cause, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_SETUP_request:
|
||
|
{
|
||
|
const struct uniapi_setup_request *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_SETUP,
|
||
|
(const union uni_msgall *)&api->setup, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_SETUP_indication:
|
||
|
{
|
||
|
const struct uniapi_setup_indication *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_SETUP,
|
||
|
(const union uni_msgall *)&api->setup, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_SETUP_response:
|
||
|
{
|
||
|
const struct uniapi_setup_response *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_CONNECT,
|
||
|
(const union uni_msgall *)&api->connect, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_SETUP_confirm:
|
||
|
{
|
||
|
const struct uniapi_setup_confirm *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_CONNECT,
|
||
|
(const union uni_msgall *)&api->connect, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_SETUP_COMPLETE_indication:
|
||
|
{
|
||
|
const struct uniapi_setup_complete_indication *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_CONNECT_ACK,
|
||
|
(const union uni_msgall *)&api->connect_ack, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_SETUP_COMPLETE_request:
|
||
|
{
|
||
|
const struct uniapi_setup_complete_request *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_CONNECT_ACK,
|
||
|
(const union uni_msgall *)&api->connect_ack, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_ALERTING_request:
|
||
|
{
|
||
|
const struct uniapi_alerting_request *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_ALERTING,
|
||
|
(const union uni_msgall *)&api->alerting, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_ALERTING_indication:
|
||
|
{
|
||
|
const struct uniapi_alerting_indication *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_ALERTING,
|
||
|
(const union uni_msgall *)&api->alerting, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_PROCEEDING_request:
|
||
|
{
|
||
|
const struct uniapi_proceeding_request *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_CALL_PROC,
|
||
|
(const union uni_msgall *)&api->call_proc, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_PROCEEDING_indication:
|
||
|
{
|
||
|
const struct uniapi_proceeding_indication *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_CALL_PROC,
|
||
|
(const union uni_msgall *)&api->call_proc, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_RELEASE_request:
|
||
|
{
|
||
|
const struct uniapi_release_request *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_RELEASE,
|
||
|
(const union uni_msgall *)&api->release, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_RELEASE_indication:
|
||
|
{
|
||
|
const struct uniapi_release_indication *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_RELEASE,
|
||
|
(const union uni_msgall *)&api->release, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_RELEASE_response:
|
||
|
{
|
||
|
const struct uniapi_release_response *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_RELEASE_COMPL,
|
||
|
(const union uni_msgall *)&api->release_compl, cx);
|
||
|
break;
|
||
|
}
|
||
|
case UNIAPI_RELEASE_confirm:
|
||
|
{
|
||
|
const struct uniapi_release_confirm *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_RELEASE,
|
||
|
(const union uni_msgall *)&api->release, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_NOTIFY_request:
|
||
|
{
|
||
|
const struct uniapi_notify_request *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_NOTIFY,
|
||
|
(const union uni_msgall *)&api->notify, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_NOTIFY_indication:
|
||
|
{
|
||
|
const struct uniapi_notify_indication *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_NOTIFY,
|
||
|
(const union uni_msgall *)&api->notify, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_STATUS_indication:
|
||
|
{
|
||
|
const struct uniapi_status_indication *api = msg;
|
||
|
|
||
|
uni_print_cref(NULL, 0, &api->cref, cx);
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_entry(cx, "my_state", "U%u", api->my_state);
|
||
|
uni_print_entry(cx, "my_cause", "%s",
|
||
|
uni_ie_cause2str(UNI_CODING_ITU, api->my_cause));
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_CALLSTATE,
|
||
|
(const union uni_ieall *)&api->his_state, cx);
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_CAUSE,
|
||
|
(const union uni_ieall *)&api->his_cause, cx);
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_EPREF,
|
||
|
(const union uni_ieall *)&api->epref, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_STATUS_ENQUIRY_request:
|
||
|
{
|
||
|
const struct uniapi_status_enquiry_request *api = msg;
|
||
|
|
||
|
uni_print_cref(NULL, 0, &api->cref, cx);
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_EPREF,
|
||
|
(const union uni_ieall *)&api->epref, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_ADD_PARTY_request:
|
||
|
{
|
||
|
const struct uniapi_add_party_request *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_ADD_PARTY,
|
||
|
(const union uni_msgall *)&api->add, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_ADD_PARTY_indication:
|
||
|
{
|
||
|
const struct uniapi_add_party_indication *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_ADD_PARTY,
|
||
|
(const union uni_msgall *)&api->add, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_PARTY_ALERTING_request:
|
||
|
{
|
||
|
const struct uniapi_party_alerting_request *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_PARTY_ALERTING,
|
||
|
(const union uni_msgall *)&api->alert, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_PARTY_ALERTING_indication:
|
||
|
{
|
||
|
const struct uniapi_party_alerting_indication *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_PARTY_ALERTING,
|
||
|
(const union uni_msgall *)&api->alert, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_ADD_PARTY_ACK_request:
|
||
|
{
|
||
|
const struct uniapi_add_party_ack_request *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_ADD_PARTY_ACK,
|
||
|
(const union uni_msgall *)&api->ack, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_ADD_PARTY_ACK_indication:
|
||
|
{
|
||
|
const struct uniapi_add_party_ack_indication *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_ADD_PARTY_ACK,
|
||
|
(const union uni_msgall *)&api->ack, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_ADD_PARTY_REJ_request:
|
||
|
{
|
||
|
const struct uniapi_add_party_rej_request *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_ADD_PARTY_REJ,
|
||
|
(const union uni_msgall *)&api->rej, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_ADD_PARTY_REJ_indication:
|
||
|
{
|
||
|
const struct uniapi_add_party_rej_indication *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_ADD_PARTY_REJ,
|
||
|
(const union uni_msgall *)&api->rej, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_DROP_PARTY_request:
|
||
|
{
|
||
|
const struct uniapi_drop_party_request *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_DROP_PARTY,
|
||
|
(const union uni_msgall *)&api->drop, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_DROP_PARTY_indication:
|
||
|
{
|
||
|
const struct uniapi_drop_party_indication *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_DROP_PARTY,
|
||
|
(const union uni_msgall *)&api->drop, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_DROP_PARTY_ACK_request:
|
||
|
{
|
||
|
const struct uniapi_drop_party_ack_request *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_DROP_PARTY_ACK,
|
||
|
(const union uni_msgall *)&api->ack, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_DROP_PARTY_ACK_indication:
|
||
|
{
|
||
|
const struct uniapi_drop_party_ack_indication *api = msg;
|
||
|
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_msg(NULL, 0, UNI_DROP_PARTY,
|
||
|
(const union uni_msgall *)&api->drop, cx);
|
||
|
uni_print_eol(cx);
|
||
|
uni_print_ie(NULL, 0, UNI_IE_CRANKBACK,
|
||
|
(const union uni_ieall *)&api->crankback, cx);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
case UNIAPI_ABORT_CALL_request:
|
||
|
{
|
||
|
const struct uniapi_abort_call_request *api = msg;
|
||
|
|
||
|
uni_print_cref(NULL, 0, &api->cref, cx);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
out:
|
||
|
cx->dont_init = old_dont_init;
|
||
|
}
|