1122205Sharti/*
2122205Sharti * Copyright (c) 2002-2003
3122205Sharti *	Fraunhofer Institute for Open Communication Systems (FhG Fokus).
4122205Sharti * 	All rights reserved.
5122205Sharti *
6122205Sharti * Redistribution and use in source and binary forms, with or without
7122205Sharti * modification, are permitted provided that the following conditions
8122205Sharti * are met:
9122205Sharti * 1. Redistributions of source code must retain the above copyright
10122205Sharti *    notice, this list of conditions and the following disclaimer.
11122205Sharti * 2. Redistributions in binary form must reproduce the above copyright
12122205Sharti *    notice, this list of conditions and the following disclaimer in the
13122205Sharti *    documentation and/or other materials provided with the distribution.
14122205Sharti *
15122205Sharti * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16122205Sharti * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17122205Sharti * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18122205Sharti * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19122205Sharti * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20122205Sharti * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21122205Sharti * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22122205Sharti * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23122205Sharti * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24122205Sharti * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25122205Sharti * SUCH DAMAGE.
26122205Sharti *
27122205Sharti * Author: Hartmut Brandt <harti@freebsd.org>
28122205Sharti *         Kendy Kutzner <kutzner@fokus.fraunhofer.de>
29122205Sharti *
30133492Sharti * $Begemot: libunimsg/netnatm/sig/sig_print.c,v 1.6 2004/08/05 07:11:02 brandt Exp $
31122205Sharti */
32122205Sharti
33122205Sharti#include <sys/types.h>
34122205Sharti#ifdef _KERNEL
35122205Sharti#include <sys/param.h>
36122205Sharti#include <sys/systm.h>
37122205Sharti#include <sys/libkern.h>
38122205Sharti#include <machine/stdarg.h>
39122205Sharti#else
40122205Sharti#include <stdio.h>
41122205Sharti#include <stdlib.h>
42122205Sharti#include <string.h>
43122205Sharti#include <stdarg.h>
44122205Sharti#endif
45122205Sharti
46122205Sharti#include <netnatm/saal/sscfu.h>
47122205Sharti#include <netnatm/msg/uni_hdr.h>
48122205Sharti#include <netnatm/msg/unistruct.h>
49122205Sharti#include <netnatm/msg/unimsglib.h>
50122205Sharti#include <netnatm/msg/uniprint.h>
51122205Sharti#include <netnatm/sig/uni.h>
52122205Sharti#include <netnatm/sig/unisig.h>
53122205Sharti#include <netnatm/sig/unidef.h>
54122205Sharti
55122205Sharticonst char *
56122205Shartiuni_strerr(u_int err)
57122205Sharti{
58122205Sharti	static const char *const errstr[] = {
59133492Sharti#define DEF(NAME, VAL, STR) [UNIAPI_##NAME] = STR,
60122205ShartiUNIAPI_DEF_ERRORS(DEF)
61122205Sharti#undef DEF
62122205Sharti	};
63122205Sharti	static char buf[100];
64122205Sharti
65122205Sharti	if (err >= sizeof(errstr)/sizeof(errstr[0]) || errstr[err] == NULL) {
66122205Sharti		sprintf(buf, "Unknown error %u", err);
67122205Sharti		return (buf);
68122205Sharti	}
69122205Sharti	return (errstr[err]);
70122205Sharti}
71122205Sharti
72133492Sharti#define D(M) [M] = #M
73122205Shartistatic const char *const msgs[] = {
74122205Sharti	D(UNIAPI_ERROR),
75122205Sharti	D(UNIAPI_CALL_CREATED),
76122205Sharti	D(UNIAPI_CALL_DESTROYED),
77122205Sharti	D(UNIAPI_PARTY_CREATED),
78122205Sharti	D(UNIAPI_PARTY_DESTROYED),
79122205Sharti	D(UNIAPI_LINK_ESTABLISH_request),
80122205Sharti	D(UNIAPI_LINK_ESTABLISH_confirm),
81122205Sharti	D(UNIAPI_LINK_RELEASE_request),
82122205Sharti	D(UNIAPI_LINK_RELEASE_confirm),
83122205Sharti	D(UNIAPI_RESET_request),
84122205Sharti	D(UNIAPI_RESET_confirm),
85122205Sharti	D(UNIAPI_RESET_indication),
86122205Sharti	D(UNIAPI_RESET_ERROR_indication),
87122205Sharti	D(UNIAPI_RESET_response),
88122205Sharti	D(UNIAPI_RESET_ERROR_response),
89122205Sharti	D(UNIAPI_RESET_STATUS_indication),
90122205Sharti	D(UNIAPI_SETUP_request),
91122205Sharti	D(UNIAPI_SETUP_indication),
92122205Sharti	D(UNIAPI_SETUP_response),
93122205Sharti	D(UNIAPI_SETUP_confirm),
94122205Sharti	D(UNIAPI_SETUP_COMPLETE_indication),
95122205Sharti	D(UNIAPI_SETUP_COMPLETE_request),
96122205Sharti	D(UNIAPI_ALERTING_request),
97122205Sharti	D(UNIAPI_ALERTING_indication),
98122205Sharti	D(UNIAPI_PROCEEDING_request),
99122205Sharti	D(UNIAPI_PROCEEDING_indication),
100122205Sharti	D(UNIAPI_RELEASE_request),
101122205Sharti	D(UNIAPI_RELEASE_indication),
102122205Sharti	D(UNIAPI_RELEASE_response),
103122205Sharti	D(UNIAPI_RELEASE_confirm),
104122205Sharti	D(UNIAPI_NOTIFY_request),
105122205Sharti	D(UNIAPI_NOTIFY_indication),
106122205Sharti	D(UNIAPI_STATUS_indication),
107122205Sharti	D(UNIAPI_STATUS_ENQUIRY_request),
108122205Sharti	D(UNIAPI_ADD_PARTY_request),
109122205Sharti	D(UNIAPI_ADD_PARTY_indication),
110122205Sharti	D(UNIAPI_PARTY_ALERTING_request),
111122205Sharti	D(UNIAPI_PARTY_ALERTING_indication),
112122205Sharti	D(UNIAPI_ADD_PARTY_ACK_request),
113122205Sharti	D(UNIAPI_ADD_PARTY_ACK_indication),
114122205Sharti	D(UNIAPI_ADD_PARTY_REJ_request),
115122205Sharti	D(UNIAPI_ADD_PARTY_REJ_indication),
116122205Sharti	D(UNIAPI_DROP_PARTY_request),
117122205Sharti	D(UNIAPI_DROP_PARTY_indication),
118122205Sharti	D(UNIAPI_DROP_PARTY_ACK_request),
119122205Sharti	D(UNIAPI_DROP_PARTY_ACK_indication),
120122205Sharti	D(UNIAPI_ABORT_CALL_request),
121122205Sharti};
122122205Sharti#undef D
123122205Sharti
124122205Shartivoid
125122205Shartiuni_print_api(char *buf, size_t bufsiz, u_int type, u_int cookie,
126122205Sharti    const void *msg, struct unicx *cx)
127122205Sharti{
128122205Sharti	int old_dont_init = cx->dont_init;
129122205Sharti
130122205Sharti	uni_print_init(buf, bufsiz, cx);
131122205Sharti	cx->dont_init = 1;
132122205Sharti
133122205Sharti	if (type >= sizeof(msgs) / sizeof(msgs[0]) || msgs[type] == NULL) {
134122205Sharti		uni_print_flag("UNIAPI_UNKNOWN", cx);
135122205Sharti		uni_print_entry(cx, "sig", "%u", type);
136122205Sharti		uni_print_entry(cx, "cookie", "%u", cookie);
137122205Sharti		goto out;
138122205Sharti	}
139122205Sharti
140122205Sharti	uni_print_flag(msgs[type], cx);
141122205Sharti	uni_print_entry(cx, "cookie", "%u", cookie);
142122205Sharti	cx->indent++;
143122205Sharti
144122205Sharti	switch (type) {
145122205Sharti
146122205Sharti	  case UNIAPI_ERROR:
147122205Sharti	    {
148122205Sharti		const struct uniapi_error *api = msg;
149122205Sharti
150122205Sharti		uni_print_eol(cx);
151122205Sharti		uni_print_entry(cx, "reason", "%s", uni_strerr(api->reason));
152122205Sharti		uni_print_entry(cx, "state", "U%u", api->state);
153122205Sharti		break;
154122205Sharti	    }
155122205Sharti
156122205Sharti	  case UNIAPI_CALL_CREATED:
157122205Sharti	    {
158122205Sharti		const struct uniapi_call_created *api = msg;
159122205Sharti
160122205Sharti		uni_print_cref(NULL, 0, &api->cref, cx);
161122205Sharti		break;
162122205Sharti	    }
163122205Sharti
164122205Sharti	  case UNIAPI_CALL_DESTROYED:
165122205Sharti	    {
166122205Sharti		const struct uniapi_call_destroyed *api = msg;
167122205Sharti
168122205Sharti		uni_print_cref(NULL, 0, &api->cref, cx);
169122205Sharti		break;
170122205Sharti	    }
171122205Sharti
172122205Sharti	  case UNIAPI_PARTY_CREATED:
173122205Sharti	    {
174122205Sharti		const struct uniapi_party_created *api = msg;
175122205Sharti
176122205Sharti		uni_print_cref(NULL, 0, &api->cref, cx);
177122205Sharti		uni_print_eol(cx);
178122205Sharti		uni_print_ie(NULL, 0, UNI_IE_EPREF,
179122205Sharti		    (const union uni_ieall *)&api->epref, cx);
180122205Sharti		break;
181122205Sharti	    }
182122205Sharti
183122205Sharti	  case UNIAPI_PARTY_DESTROYED:
184122205Sharti	    {
185122205Sharti		const struct uniapi_party_destroyed *api = msg;
186122205Sharti
187122205Sharti		uni_print_cref(NULL, 0, &api->cref, cx);
188122205Sharti		uni_print_eol(cx);
189122205Sharti		uni_print_ie(NULL, 0, UNI_IE_EPREF,
190122205Sharti		    (const union uni_ieall *)&api->epref, cx);
191122205Sharti		break;
192122205Sharti	    }
193122205Sharti
194122205Sharti	  case UNIAPI_LINK_ESTABLISH_request:
195122205Sharti	  case UNIAPI_LINK_ESTABLISH_confirm:
196122205Sharti	  case UNIAPI_LINK_RELEASE_request:
197122205Sharti	  case UNIAPI_LINK_RELEASE_confirm:
198122205Sharti		break;
199122205Sharti
200122205Sharti	  case UNIAPI_RESET_request:
201122205Sharti	    {
202122205Sharti		const struct uniapi_reset_request *api = msg;
203122205Sharti
204122205Sharti		uni_print_eol(cx);
205122205Sharti		uni_print_ie(NULL, 0, UNI_IE_RESTART,
206122205Sharti		    (const union uni_ieall *)&api->restart, cx);
207122205Sharti		uni_print_eol(cx);
208122205Sharti		uni_print_ie(NULL, 0, UNI_IE_CONNID,
209122205Sharti		    (const union uni_ieall *)&api->restart, cx);
210122205Sharti		break;
211122205Sharti	    }
212122205Sharti
213122205Sharti	  case UNIAPI_RESET_confirm:
214122205Sharti	    {
215122205Sharti		const struct uniapi_reset_confirm *api = msg;
216122205Sharti
217122205Sharti		uni_print_eol(cx);
218122205Sharti		uni_print_ie(NULL, 0, UNI_IE_RESTART,
219122205Sharti		    (const union uni_ieall *)&api->restart, cx);
220122205Sharti		uni_print_eol(cx);
221122205Sharti		uni_print_ie(NULL, 0, UNI_IE_CONNID,
222122205Sharti		    (const union uni_ieall *)&api->restart, cx);
223122205Sharti		break;
224122205Sharti	    }
225122205Sharti
226122205Sharti	  case UNIAPI_RESET_indication:
227122205Sharti	    {
228122205Sharti		const struct uniapi_reset_indication *api = msg;
229122205Sharti
230122205Sharti		uni_print_eol(cx);
231122205Sharti		uni_print_ie(NULL, 0, UNI_IE_RESTART,
232122205Sharti		    (const union uni_ieall *)&api->restart, cx);
233122205Sharti		uni_print_eol(cx);
234122205Sharti		uni_print_ie(NULL, 0, UNI_IE_CONNID,
235122205Sharti		    (const union uni_ieall *)&api->restart, cx);
236122205Sharti		break;
237122205Sharti	    }
238122205Sharti
239122205Sharti	  case UNIAPI_RESET_ERROR_indication:
240122205Sharti	    {
241122205Sharti		const struct uniapi_reset_error_indication *api = msg;
242122205Sharti		static const struct uni_print_tbl reason[] = {
243122205Sharti#define DEF(NAME, VALUE, STR) { STR, VALUE },
244122205Sharti			UNIAPI_DEF_RESET_ERRORS(DEF)
245122205Sharti#undef DEF
246122205Sharti			{ NULL, 0 }
247122205Sharti		};
248122205Sharti		static const struct uni_print_tbl source[] = {
249122205Sharti			{ "start", 0 },
250122205Sharti			{ "respond", 1 },
251122205Sharti			{ NULL, 0 }
252122205Sharti		};
253122205Sharti
254122205Sharti		uni_print_eol(cx);
255122205Sharti		uni_print_tbl("source", api->source, source, cx);
256122205Sharti		uni_print_tbl("reason", api->reason, reason, cx);
257122205Sharti		break;
258122205Sharti	    }
259122205Sharti
260122205Sharti	  case UNIAPI_RESET_response:
261122205Sharti	    {
262122205Sharti		const struct uniapi_reset_response *api = msg;
263122205Sharti
264122205Sharti		uni_print_eol(cx);
265122205Sharti		uni_print_ie(NULL, 0, UNI_IE_RESTART,
266122205Sharti		    (const union uni_ieall *)&api->restart, cx);
267122205Sharti		uni_print_eol(cx);
268122205Sharti		uni_print_ie(NULL, 0, UNI_IE_CONNID,
269122205Sharti		    (const union uni_ieall *)&api->restart, cx);
270122205Sharti		break;
271122205Sharti	    }
272122205Sharti
273122205Sharti	  case UNIAPI_RESET_ERROR_response:
274122205Sharti	    {
275122205Sharti		const struct uniapi_reset_error_response *api = msg;
276122205Sharti
277122205Sharti		uni_print_eol(cx);
278122205Sharti		uni_print_ie(NULL, 0, UNI_IE_CAUSE,
279122205Sharti		    (const union uni_ieall *)&api->cause, cx);
280122205Sharti		break;
281122205Sharti	    }
282122205Sharti
283122205Sharti	  case UNIAPI_RESET_STATUS_indication:
284122205Sharti	    {
285122205Sharti		const struct uniapi_reset_status_indication *api = msg;
286122205Sharti
287122205Sharti		uni_print_cref(NULL, 0, &api->cref, cx);
288122205Sharti		uni_print_eol(cx);
289122205Sharti		uni_print_ie(NULL, 0, UNI_IE_CALLSTATE,
290122205Sharti		    (const union uni_ieall *)&api->callstate, cx);
291122205Sharti		uni_print_eol(cx);
292122205Sharti		uni_print_ie(NULL, 0, UNI_IE_CAUSE,
293122205Sharti		    (const union uni_ieall *)&api->cause, cx);
294122205Sharti		break;
295122205Sharti	    }
296122205Sharti
297122205Sharti	  case UNIAPI_SETUP_request:
298122205Sharti	    {
299122205Sharti		const struct uniapi_setup_request *api = msg;
300122205Sharti
301122205Sharti		uni_print_eol(cx);
302122205Sharti		uni_print_msg(NULL, 0, UNI_SETUP,
303122205Sharti		    (const union uni_msgall *)&api->setup, cx);
304122205Sharti		break;
305122205Sharti	    }
306122205Sharti
307122205Sharti	  case UNIAPI_SETUP_indication:
308122205Sharti	    {
309122205Sharti		const struct uniapi_setup_indication *api = msg;
310122205Sharti
311122205Sharti		uni_print_eol(cx);
312122205Sharti		uni_print_msg(NULL, 0, UNI_SETUP,
313122205Sharti		    (const union uni_msgall *)&api->setup, cx);
314122205Sharti		break;
315122205Sharti	    }
316122205Sharti
317122205Sharti	  case UNIAPI_SETUP_response:
318122205Sharti	    {
319122205Sharti		const struct uniapi_setup_response *api = msg;
320122205Sharti
321122205Sharti		uni_print_eol(cx);
322122205Sharti		uni_print_msg(NULL, 0, UNI_CONNECT,
323122205Sharti		    (const union uni_msgall *)&api->connect, cx);
324122205Sharti		break;
325122205Sharti	    }
326122205Sharti
327122205Sharti	  case UNIAPI_SETUP_confirm:
328122205Sharti	    {
329122205Sharti		const struct uniapi_setup_confirm *api = msg;
330122205Sharti
331122205Sharti		uni_print_eol(cx);
332122205Sharti		uni_print_msg(NULL, 0, UNI_CONNECT,
333122205Sharti		    (const union uni_msgall *)&api->connect, cx);
334122205Sharti		break;
335122205Sharti	    }
336122205Sharti
337122205Sharti	  case UNIAPI_SETUP_COMPLETE_indication:
338122205Sharti	    {
339122205Sharti		const struct uniapi_setup_complete_indication *api = msg;
340122205Sharti
341122205Sharti		uni_print_eol(cx);
342122205Sharti		uni_print_msg(NULL, 0, UNI_CONNECT_ACK,
343122205Sharti		    (const union uni_msgall *)&api->connect_ack, cx);
344122205Sharti		break;
345122205Sharti	    }
346122205Sharti
347122205Sharti	  case UNIAPI_SETUP_COMPLETE_request:
348122205Sharti	    {
349122205Sharti		const struct uniapi_setup_complete_request *api = msg;
350122205Sharti
351122205Sharti		uni_print_eol(cx);
352122205Sharti		uni_print_msg(NULL, 0, UNI_CONNECT_ACK,
353122205Sharti		    (const union uni_msgall *)&api->connect_ack, cx);
354122205Sharti		break;
355122205Sharti	    }
356122205Sharti
357122205Sharti	  case UNIAPI_ALERTING_request:
358122205Sharti	    {
359122205Sharti		const struct uniapi_alerting_request *api = msg;
360122205Sharti
361122205Sharti		uni_print_eol(cx);
362122205Sharti		uni_print_msg(NULL, 0, UNI_ALERTING,
363122205Sharti		    (const union uni_msgall *)&api->alerting, cx);
364122205Sharti		break;
365122205Sharti	    }
366122205Sharti
367122205Sharti	  case UNIAPI_ALERTING_indication:
368122205Sharti	    {
369122205Sharti		const struct uniapi_alerting_indication *api = msg;
370122205Sharti
371122205Sharti		uni_print_eol(cx);
372122205Sharti		uni_print_msg(NULL, 0, UNI_ALERTING,
373122205Sharti		    (const union uni_msgall *)&api->alerting, cx);
374122205Sharti		break;
375122205Sharti	    }
376122205Sharti
377122205Sharti	  case UNIAPI_PROCEEDING_request:
378122205Sharti	    {
379122205Sharti		const struct uniapi_proceeding_request *api = msg;
380122205Sharti
381122205Sharti		uni_print_eol(cx);
382122205Sharti		uni_print_msg(NULL, 0, UNI_CALL_PROC,
383122205Sharti		    (const union uni_msgall *)&api->call_proc, cx);
384122205Sharti		break;
385122205Sharti	    }
386122205Sharti
387122205Sharti	  case UNIAPI_PROCEEDING_indication:
388122205Sharti	    {
389122205Sharti		const struct uniapi_proceeding_indication *api = msg;
390122205Sharti
391122205Sharti		uni_print_eol(cx);
392122205Sharti		uni_print_msg(NULL, 0, UNI_CALL_PROC,
393122205Sharti		    (const union uni_msgall *)&api->call_proc, cx);
394122205Sharti		break;
395122205Sharti	    }
396122205Sharti
397122205Sharti	  case UNIAPI_RELEASE_request:
398122205Sharti	    {
399122205Sharti		const struct uniapi_release_request *api = msg;
400122205Sharti
401122205Sharti		uni_print_eol(cx);
402122205Sharti		uni_print_msg(NULL, 0, UNI_RELEASE,
403122205Sharti		    (const union uni_msgall *)&api->release, cx);
404122205Sharti		break;
405122205Sharti	    }
406122205Sharti
407122205Sharti	  case UNIAPI_RELEASE_indication:
408122205Sharti	    {
409122205Sharti		const struct uniapi_release_indication *api = msg;
410122205Sharti
411122205Sharti		uni_print_eol(cx);
412122205Sharti		uni_print_msg(NULL, 0, UNI_RELEASE,
413122205Sharti		    (const union uni_msgall *)&api->release, cx);
414122205Sharti		break;
415122205Sharti	    }
416122205Sharti
417122205Sharti	  case UNIAPI_RELEASE_response:
418122205Sharti	    {
419122205Sharti		const struct uniapi_release_response *api = msg;
420122205Sharti
421122205Sharti		uni_print_eol(cx);
422122205Sharti		uni_print_msg(NULL, 0, UNI_RELEASE_COMPL,
423122205Sharti		    (const union uni_msgall *)&api->release_compl, cx);
424122205Sharti		break;
425122205Sharti	    }
426122205Sharti	  case UNIAPI_RELEASE_confirm:
427122205Sharti	    {
428122205Sharti		const struct uniapi_release_confirm *api = msg;
429122205Sharti
430122205Sharti		uni_print_eol(cx);
431122205Sharti		uni_print_msg(NULL, 0, UNI_RELEASE,
432122205Sharti		    (const union uni_msgall *)&api->release, cx);
433122205Sharti		break;
434122205Sharti	    }
435122205Sharti
436122205Sharti	  case UNIAPI_NOTIFY_request:
437122205Sharti	    {
438122205Sharti		const struct uniapi_notify_request *api = msg;
439122205Sharti
440122205Sharti		uni_print_eol(cx);
441122205Sharti		uni_print_msg(NULL, 0, UNI_NOTIFY,
442122205Sharti		    (const union uni_msgall *)&api->notify, cx);
443122205Sharti		break;
444122205Sharti	    }
445122205Sharti
446122205Sharti	  case UNIAPI_NOTIFY_indication:
447122205Sharti	    {
448122205Sharti		const struct uniapi_notify_indication *api = msg;
449122205Sharti
450122205Sharti		uni_print_eol(cx);
451122205Sharti		uni_print_msg(NULL, 0, UNI_NOTIFY,
452122205Sharti		    (const union uni_msgall *)&api->notify, cx);
453122205Sharti		break;
454122205Sharti	    }
455122205Sharti
456122205Sharti	  case UNIAPI_STATUS_indication:
457122205Sharti	    {
458122205Sharti		const struct uniapi_status_indication *api = msg;
459122205Sharti
460122205Sharti		uni_print_cref(NULL, 0, &api->cref, cx);
461122205Sharti		uni_print_eol(cx);
462122205Sharti		uni_print_entry(cx, "my_state", "U%u", api->my_state);
463122205Sharti		uni_print_entry(cx, "my_cause", "%s",
464122205Sharti		    uni_ie_cause2str(UNI_CODING_ITU, api->my_cause));
465122205Sharti		uni_print_eol(cx);
466122205Sharti		uni_print_ie(NULL, 0, UNI_IE_CALLSTATE,
467122205Sharti		    (const union uni_ieall *)&api->his_state, cx);
468122205Sharti		uni_print_eol(cx);
469122205Sharti		uni_print_ie(NULL, 0, UNI_IE_CAUSE,
470122205Sharti		    (const union uni_ieall *)&api->his_cause, cx);
471122205Sharti		uni_print_eol(cx);
472122205Sharti		uni_print_ie(NULL, 0, UNI_IE_EPREF,
473122205Sharti		    (const union uni_ieall *)&api->epref, cx);
474122205Sharti		break;
475122205Sharti	    }
476122205Sharti
477122205Sharti	  case UNIAPI_STATUS_ENQUIRY_request:
478122205Sharti	    {
479122205Sharti		const struct uniapi_status_enquiry_request *api = msg;
480122205Sharti
481122205Sharti		uni_print_cref(NULL, 0, &api->cref, cx);
482122205Sharti		uni_print_eol(cx);
483122205Sharti		uni_print_ie(NULL, 0, UNI_IE_EPREF,
484122205Sharti		    (const union uni_ieall *)&api->epref, cx);
485122205Sharti		break;
486122205Sharti	    }
487122205Sharti
488122205Sharti	  case UNIAPI_ADD_PARTY_request:
489122205Sharti	    {
490122205Sharti		const struct uniapi_add_party_request *api = msg;
491122205Sharti
492122205Sharti		uni_print_eol(cx);
493122205Sharti		uni_print_msg(NULL, 0, UNI_ADD_PARTY,
494122205Sharti		    (const union uni_msgall *)&api->add, cx);
495122205Sharti		break;
496122205Sharti	    }
497122205Sharti
498122205Sharti	  case UNIAPI_ADD_PARTY_indication:
499122205Sharti	    {
500122205Sharti		const struct uniapi_add_party_indication *api = msg;
501122205Sharti
502122205Sharti		uni_print_eol(cx);
503122205Sharti		uni_print_msg(NULL, 0, UNI_ADD_PARTY,
504122205Sharti		    (const union uni_msgall *)&api->add, cx);
505122205Sharti		break;
506122205Sharti	    }
507122205Sharti
508122205Sharti	  case UNIAPI_PARTY_ALERTING_request:
509122205Sharti	    {
510122205Sharti		const struct uniapi_party_alerting_request *api = msg;
511122205Sharti
512122205Sharti		uni_print_eol(cx);
513122205Sharti		uni_print_msg(NULL, 0, UNI_PARTY_ALERTING,
514122205Sharti		    (const union uni_msgall *)&api->alert, cx);
515122205Sharti		break;
516122205Sharti	    }
517122205Sharti
518122205Sharti	  case UNIAPI_PARTY_ALERTING_indication:
519122205Sharti	    {
520122205Sharti		const struct uniapi_party_alerting_indication *api = msg;
521122205Sharti
522122205Sharti		uni_print_eol(cx);
523122205Sharti		uni_print_msg(NULL, 0, UNI_PARTY_ALERTING,
524122205Sharti		    (const union uni_msgall *)&api->alert, cx);
525122205Sharti		break;
526122205Sharti	    }
527122205Sharti
528122205Sharti	  case UNIAPI_ADD_PARTY_ACK_request:
529122205Sharti	    {
530122205Sharti		const struct uniapi_add_party_ack_request *api = msg;
531122205Sharti
532122205Sharti		uni_print_eol(cx);
533122205Sharti		uni_print_msg(NULL, 0, UNI_ADD_PARTY_ACK,
534122205Sharti		    (const union uni_msgall *)&api->ack, cx);
535122205Sharti		break;
536122205Sharti	    }
537122205Sharti
538122205Sharti	  case UNIAPI_ADD_PARTY_ACK_indication:
539122205Sharti	    {
540122205Sharti		const struct uniapi_add_party_ack_indication *api = msg;
541122205Sharti
542122205Sharti		uni_print_eol(cx);
543122205Sharti		uni_print_msg(NULL, 0, UNI_ADD_PARTY_ACK,
544122205Sharti		    (const union uni_msgall *)&api->ack, cx);
545122205Sharti		break;
546122205Sharti	    }
547122205Sharti
548122205Sharti	  case UNIAPI_ADD_PARTY_REJ_request:
549122205Sharti	    {
550122205Sharti		const struct uniapi_add_party_rej_request *api = msg;
551122205Sharti
552122205Sharti		uni_print_eol(cx);
553122205Sharti		uni_print_msg(NULL, 0, UNI_ADD_PARTY_REJ,
554122205Sharti		    (const union uni_msgall *)&api->rej, cx);
555122205Sharti		break;
556122205Sharti	    }
557122205Sharti
558122205Sharti	  case UNIAPI_ADD_PARTY_REJ_indication:
559122205Sharti	    {
560122205Sharti		const struct uniapi_add_party_rej_indication *api = msg;
561122205Sharti
562122205Sharti		uni_print_eol(cx);
563122205Sharti		uni_print_msg(NULL, 0, UNI_ADD_PARTY_REJ,
564122205Sharti		    (const union uni_msgall *)&api->rej, cx);
565122205Sharti		break;
566122205Sharti	    }
567122205Sharti
568122205Sharti	  case UNIAPI_DROP_PARTY_request:
569122205Sharti	    {
570122205Sharti		const struct uniapi_drop_party_request *api = msg;
571122205Sharti
572122205Sharti		uni_print_eol(cx);
573122205Sharti		uni_print_msg(NULL, 0, UNI_DROP_PARTY,
574122205Sharti		    (const union uni_msgall *)&api->drop, cx);
575122205Sharti		break;
576122205Sharti	    }
577122205Sharti
578122205Sharti	  case UNIAPI_DROP_PARTY_indication:
579122205Sharti	    {
580122205Sharti		const struct uniapi_drop_party_indication *api = msg;
581122205Sharti
582122205Sharti		uni_print_eol(cx);
583122205Sharti		uni_print_msg(NULL, 0, UNI_DROP_PARTY,
584122205Sharti		    (const union uni_msgall *)&api->drop, cx);
585122205Sharti		break;
586122205Sharti	    }
587122205Sharti
588122205Sharti	  case UNIAPI_DROP_PARTY_ACK_request:
589122205Sharti	    {
590122205Sharti		const struct uniapi_drop_party_ack_request *api = msg;
591122205Sharti
592122205Sharti		uni_print_eol(cx);
593122205Sharti		uni_print_msg(NULL, 0, UNI_DROP_PARTY_ACK,
594122205Sharti		    (const union uni_msgall *)&api->ack, cx);
595122205Sharti		break;
596122205Sharti	    }
597122205Sharti
598122205Sharti	  case UNIAPI_DROP_PARTY_ACK_indication:
599122205Sharti	    {
600122205Sharti		const struct uniapi_drop_party_ack_indication *api = msg;
601122205Sharti
602122205Sharti		uni_print_eol(cx);
603122205Sharti		uni_print_msg(NULL, 0, UNI_DROP_PARTY,
604122205Sharti		    (const union uni_msgall *)&api->drop, cx);
605122205Sharti		uni_print_eol(cx);
606122205Sharti		uni_print_ie(NULL, 0, UNI_IE_CRANKBACK,
607122205Sharti		    (const union uni_ieall *)&api->crankback, cx);
608122205Sharti		break;
609122205Sharti	    }
610122205Sharti
611122205Sharti	  case UNIAPI_ABORT_CALL_request:
612122205Sharti	    {
613122205Sharti		const struct uniapi_abort_call_request *api = msg;
614122205Sharti
615122205Sharti		uni_print_cref(NULL, 0, &api->cref, cx);
616122205Sharti		break;
617122205Sharti	    }
618122205Sharti	}
619122205Sharti
620122205Sharti  out:
621122205Sharti	cx->dont_init = old_dont_init;
622122205Sharti}
623