3 * ===================================
4 * HARP | Host ATM Research Platform
5 * ===================================
8 * This Host ATM Research Platform ("HARP") file (the "Software") is
9 * made available by Network Computing Services, Inc. ("NetworkCS")
10 * "AS IS". NetworkCS does not provide maintenance, improvements or
11 * support of any kind.
13 * NETWORKCS MAKES NO WARRANTIES OR REPRESENTATIONS, EXPRESS OR IMPLIED,
14 * INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
15 * AND FITNESS FOR A PARTICULAR PURPOSE, AS TO ANY ELEMENT OF THE
16 * SOFTWARE OR ANY SUPPORT PROVIDED IN CONNECTION WITH THIS SOFTWARE.
17 * In no event shall NetworkCS be responsible for any damages, including
18 * but not limited to consequential damages, arising from or relating to
19 * any use of the Software or related support.
21 * Copyright 1994-1998 Network Computing Services, Inc.
23 * Copies of this Software may be made, however, the above copyright
24 * notice must be reproduced on all copies.
26 * @(#) $FreeBSD: src/sys/netatm/spans/spans_print.c,v 1.6 1999/08/28 00:48:50 peter Exp $
31 * SPANS Signalling Manager
32 * ---------------------------
34 * SPANS Print Routines.
38 #include <netatm/kern_include.h>
40 #include "spans_xdr.h"
41 #include <netatm/spans/spans_var.h>
44 __RCSID("@(#) $FreeBSD: src/sys/netatm/spans/spans_print.c,v 1.6 1999/08/28 00:48:50 peter Exp $");
48 * If LONGPRINT is defined, every field of the SPANS message will be
49 * printed. If not, a shorter summary (useful for debugging without
50 * swamping the console) is printed.
52 /* #define LONGPRINT */
57 static void spans_msgtype_str __P((spans_msgtype *, char *, int));
58 static void spans_print_msgbody __P((spans_msgbody *));
59 static void spans_result_str __P((spans_result *, char *, int));
63 static void inc_indent __P((void));
64 static void dec_indent __P((void));
65 static void spans_aal_str __P((spans_aal *, char *, int));
66 static void spans_query_type_str __P((spans_query_type *, char *, int));
67 static void spans_state_str __P((spans_query_type *, char *, int));
68 static void spans_print_version __P((spans_version *));
69 static void spans_print_vpvc __P((spans_vpvc *));
70 static void spans_print_vpvc_pref __P((spans_vpvc_pref *));
71 static void spans_print_addr __P((spans_addr *));
72 static void spans_print_sap __P((spans_sap *));
73 static void spans_print_atm_conn __P((spans_atm_conn *));
74 static void spans_print_resrc __P((spans_resrc *));
75 static void spans_print_aal __P((spans_aal *));
76 static void spans_print_result __P((spans_result *));
77 static void spans_print_msgtype __P((spans_msgtype *));
78 static void spans_print_parm_stat_req __P((spans_parm_stat_req *));
79 static void spans_print_parm_stat_ind __P((spans_parm_stat_ind *));
80 static void spans_print_parm_stat_rsp __P((spans_parm_stat_rsp *));
81 static void spans_print_parm_open_req __P((spans_parm_open_req *));
82 static void spans_print_parm_open_ind __P((spans_parm_open_ind *));
83 static void spans_print_parm_open_rsp __P((spans_parm_open_rsp *));
84 static void spans_print_parm_open_cnf __P((spans_parm_open_cnf *));
85 static void spans_print_parm_close_req __P((spans_parm_close_req *));
86 static void spans_print_parm_close_ind __P((spans_parm_close_ind *));
87 static void spans_print_parm_close_rsp __P((spans_parm_close_rsp *));
88 static void spans_print_parm_close_cnf __P((spans_parm_close_cnf *));
89 static void spans_print_parm_rclose_req __P((spans_parm_rclose_req *));
90 static void spans_print_parm_rclose_ind __P((spans_parm_rclose_ind *));
91 static void spans_print_parm_rclose_rsp __P((spans_parm_rclose_rsp *));
92 static void spans_print_parm_rclose_cnf __P((spans_parm_rclose_cnf *));
93 static void spans_print_parm_multi_req __P((spans_parm_multi_req *));
94 static void spans_print_parm_multi_ind __P((spans_parm_multi_ind *));
95 static void spans_print_parm_multi_rsp __P((spans_parm_multi_rsp *));
96 static void spans_print_parm_multi_cnf __P((spans_parm_multi_cnf *));
97 static void spans_print_parm_add_req __P((spans_parm_add_req *));
98 static void spans_print_parm_add_ind __P((spans_parm_add_ind *));
99 static void spans_print_parm_add_rsp __P((spans_parm_add_rsp *));
100 static void spans_print_parm_add_cnf __P((spans_parm_add_cnf *));
101 static void spans_print_parm_join_req __P((spans_parm_join_req *));
102 static void spans_print_parm_join_cnf __P((spans_parm_join_cnf *));
103 static void spans_print_parm_leave_req __P((spans_parm_leave_req *));
104 static void spans_print_parm_leave_cnf __P((spans_parm_leave_cnf *));
105 static void spans_print_parm_vcir_ind __P((spans_parm_vcir_ind *));
106 static void spans_print_parm_query_req __P((spans_parm_query_req *));
107 static void spans_print_parm_query_rsp __P((spans_parm_query_rsp *));
113 #define MAX_INDENT 10
114 #define INIT_INDENT &indent_str[MAX_INDENT]
115 static char *spans_indent;
116 static char indent_str[11] = " ";
121 if (spans_indent != &indent_str[0]) {
129 if (spans_indent != INIT_INDENT) {
135 spans_aal_str(objp, dest, len)
140 static char *aal_names[] = {
149 if (*objp < SPANS_AAL0 || *objp > SPANS_AAL5) {
150 snprintf(dest, len, "Invalid (%d)", (int)*objp);
152 snprintf(dest, len, "%s (%d)", aal_names[(int)*objp],
160 spans_result_str(objp, dest, len)
165 static char *result_names[] = {
173 if (*objp < SPANS_OK || *objp > SPANS_BADDEST) {
174 snprintf(dest, len, "Invalid (%d)", (int)*objp);
176 snprintf(dest, len, "%s (%d)",
177 result_names[(int)*objp], (int)*objp);
182 spans_msgtype_str(objp, dest, len)
192 } msgtype_names[] = {
193 { SPANS_STAT_REQ, "SPANS_STAT_REQ" },
194 { SPANS_STAT_IND, "SPANS_STAT_IND" },
195 { SPANS_STAT_RSP, "SPANS_STAT_RSP" },
196 { SPANS_OPEN_REQ, "SPANS_OPEN_REQ" },
197 { SPANS_OPEN_IND, "SPANS_OPEN_IND" },
198 { SPANS_OPEN_RSP, "SPANS_OPEN_RSP" },
199 { SPANS_OPEN_CNF, "SPANS_OPEN_CNF" },
200 { SPANS_CLOSE_REQ, "SPANS_CLOSE_REQ" },
201 { SPANS_CLOSE_IND, "SPANS_CLOSE_IND" },
202 { SPANS_CLOSE_RSP, "SPANS_CLOSE_RSP" },
203 { SPANS_CLOSE_CNF, "SPANS_CLOSE_CNF" },
204 { SPANS_RCLOSE_REQ, "SPANS_RCLOSE_REQ" },
205 { SPANS_RCLOSE_IND, "SPANS_RCLOSE_IND" },
206 { SPANS_RCLOSE_RSP, "SPANS_RCLOSE_RSP" },
207 { SPANS_RCLOSE_CNF, "SPANS_RCLOSE_CNF" },
208 { SPANS_MULTI_REQ, "SPANS_MULTI_REQ" },
209 { SPANS_MULTI_IND, "SPANS_MULTI_IND" },
210 { SPANS_MULTI_RSP, "SPANS_MULTI_RSP" },
211 { SPANS_MULTI_CNF, "SPANS_MULTI_CNF" },
212 { SPANS_ADD_REQ, "SPANS_ADD_REQ" },
213 { SPANS_ADD_IND, "SPANS_ADD_IND" },
214 { SPANS_ADD_RSP, "SPANS_ADD_RSP" },
215 { SPANS_ADD_CNF, "SPANS_ADD_CNF" },
216 { SPANS_JOIN_REQ, "SPANS_JOIN_REQ" },
217 { SPANS_JOIN_CNF, "SPANS_JOIN_CNF" },
218 { SPANS_LEAVE_REQ, "SPANS_LEAVE_REQ" },
219 { SPANS_LEAVE_CNF, "SPANS_LEAVE_CNF" },
220 { SPANS_VCIR_IND, "SPANS_VCIR_IND" },
221 { SPANS_QUERY_REQ, "SPANS_QUERY_REQ" },
222 { SPANS_QUERY_RSP, "SPANS_QUERY_RSP" },
227 * Search the name table for the specified type
229 for (i=0; msgtype_names[i].name; i++) {
230 if (*objp == msgtype_names[i].type) {
231 snprintf(dest, len, "%s (%d)",
232 msgtype_names[i].name,
239 * Type was not found--return an error indicator
241 snprintf(dest, len, "Invalid (%d)", (int)*objp);
247 spans_query_type_str(objp, dest, len)
248 spans_query_type *objp;
252 static char *query_names[] = {
253 "SPANS_QUERY_NORMAL",
255 "SPANS_QUERY_END_TO_END"
258 if (*objp < SPANS_QUERY_NORMAL ||
259 *objp > SPANS_QUERY_END_TO_END) {
260 snprintf(dest, len, "Invalid (%d)", (int)*objp);
262 snprintf(dest, len, "%s (%d)", query_names[(int)*objp],
268 spans_state_str(objp, dest, len)
269 spans_query_type *objp;
273 static char *state_names[] = {
275 "SPANS_CONN_OPEN_PEND",
276 "SPANS_CONN_CLOSE_PEND",
280 if (*objp < SPANS_CONN_OPEN || *objp > SPANS_CONN_CLOSED) {
281 snprintf(dest, len, "Invalid (%d)", (int)*objp);
283 snprintf(dest, len, "%s (%d)", state_names[(int)*objp],
290 spans_print_version(objp)
293 printf("%sspans_version 0x%x\n", spans_indent, *objp);
297 spans_print_vpvc(objp)
300 printf("%sVP/VC %d/%d\n", spans_indent,
301 SPANS_EXTRACT_VPI(*objp),
302 SPANS_EXTRACT_VCI(*objp));
306 spans_print_vpvc_pref(objp)
307 spans_vpvc_pref *objp;
309 printf("%sspans_vpvc_pref\n", spans_indent);
311 printf("%s%s\n", spans_indent,
312 (objp->vpf_valid ? "Valid" : "Not valid"));
313 spans_print_vpvc(&objp->vpf_vpvc);
318 spans_print_addr(objp)
323 strncpy(addr_str, spans_addr_print(objp), sizeof(addr_str));
324 printf("%sspans_addr %s\n", spans_indent, addr_str);
328 spans_print_sap(objp)
331 printf("%sSAP %d\n", spans_indent, *objp);
335 spans_print_atm_conn(objp)
336 spans_atm_conn *objp;
338 printf("%sspans_atm_conn\n", spans_indent);
340 spans_print_addr(&objp->con_dst);
341 spans_print_addr(&objp->con_src);
342 spans_print_sap(&objp->con_dsap);
343 spans_print_sap(&objp->con_ssap);
348 spans_print_resrc(objp)
351 printf("%sspans_resrc\n", spans_indent);
353 printf("%srsc_peak %d\n", spans_indent, objp->rsc_peak);
354 printf("%srsc_mean %d\n", spans_indent, objp->rsc_mean);
355 printf("%srsc_burst %d\n", spans_indent, objp->rsc_burst);
360 spans_print_aal(objp)
365 spans_aal_str(objp, aal_str, sizeof(aal_str));
366 printf("%sspans_aal %s\n", spans_indent, aal_str);
370 spans_print_result(objp)
375 spans_result_str(objp, result_str, sizeof(result_str));
376 printf("%sspans_result %s\n", spans_indent, result_str);
380 spans_print_msgtype(objp)
383 char msgtype_str[80];
385 spans_msgtype_str(objp, msgtype_str, sizeof(msgtype_str));
386 printf("%sspans_msgtype %s\n", spans_indent, msgtype_str);
390 spans_print_parm_stat_req(objp)
391 spans_parm_stat_req *objp;
393 printf("%sspans_parm_stat_req\n", spans_indent);
395 printf("%sstreq_es_epoch %d\n", spans_indent,
396 objp->streq_es_epoch);
401 spans_print_parm_stat_ind(objp)
402 spans_parm_stat_ind *objp;
404 printf("%sspans_parm_stat_ind\n", spans_indent);
406 printf("%sstind_sw_epoch %d\n", spans_indent,
407 objp->stind_sw_epoch);
408 spans_print_addr(&objp->stind_es_addr);
409 spans_print_addr(&objp->stind_sw_addr);
414 spans_print_parm_stat_rsp(objp)
415 spans_parm_stat_rsp *objp;
417 printf("%sspans_parm_stat_rsp\n", spans_indent);
419 printf("%sstrsp_es_epoch %d\n", spans_indent,
420 objp->strsp_es_epoch);
421 spans_print_addr(&objp->strsp_es_addr);
426 spans_print_parm_open_req(objp)
427 spans_parm_open_req *objp;
429 printf("%sspans_parm_open_req\n", spans_indent);
431 spans_print_atm_conn(&objp->opreq_conn);
432 spans_print_aal(&objp->opreq_aal);
433 spans_print_resrc(&objp->opreq_desrsrc);
434 spans_print_resrc(&objp->opreq_minrsrc);
435 spans_print_vpvc_pref(&objp->opreq_vpvc);
440 spans_print_parm_open_ind(objp)
441 spans_parm_open_ind *objp;
443 printf("%sspans_parm_open_ind\n", spans_indent);
445 spans_print_atm_conn(&objp->opind_conn);
446 spans_print_aal(&objp->opind_aal);
447 spans_print_resrc(&objp->opind_desrsrc);
448 spans_print_resrc(&objp->opind_minrsrc);
449 spans_print_vpvc_pref(&objp->opind_vpvc);
454 spans_print_parm_open_rsp(objp)
455 spans_parm_open_rsp *objp;
457 printf("%sspans_parm_open_rsp\n", spans_indent);
459 spans_print_atm_conn(&objp->oprsp_conn);
460 spans_print_result(&objp->oprsp_result);
461 spans_print_resrc(&objp->oprsp_rsrc);
462 spans_print_vpvc(&objp->oprsp_vpvc);
467 spans_print_parm_open_cnf(objp)
468 spans_parm_open_cnf *objp;
470 printf("%sspans_parm_open_cnf\n", spans_indent);
472 spans_print_atm_conn(&objp->opcnf_conn);
473 spans_print_result(&objp->opcnf_result);
474 spans_print_resrc(&objp->opcnf_rsrc);
475 spans_print_vpvc(&objp->opcnf_vpvc);
480 spans_print_parm_close_req(objp)
481 spans_parm_close_req *objp;
483 printf("%sspans_parm_close_req\n", spans_indent);
485 spans_print_atm_conn(&objp->clreq_conn);
490 spans_print_parm_close_ind(objp)
491 spans_parm_close_ind *objp;
493 printf("%sspans_parm_close_ind\n", spans_indent);
495 spans_print_atm_conn(&objp->clind_conn);
500 spans_print_parm_close_rsp(objp)
501 spans_parm_close_rsp *objp;
503 printf("%sspans_parm_close_rsp\n", spans_indent);
505 spans_print_atm_conn(&objp->clrsp_conn);
506 spans_print_result(&objp->clrsp_result);
511 spans_print_parm_close_cnf(objp)
512 spans_parm_close_cnf *objp;
514 printf("%sspans_parm_close_cnf\n", spans_indent);
516 spans_print_atm_conn(&objp->clcnf_conn);
517 spans_print_result(&objp->clcnf_result);
522 spans_print_parm_rclose_req(objp)
523 spans_parm_rclose_req *objp;
525 printf("%sspans_parm_rclose_req\n", spans_indent);
527 spans_print_atm_conn(&objp->rcreq_conn);
532 spans_print_parm_rclose_ind(objp)
533 spans_parm_rclose_ind *objp;
535 printf("%sspans_parm_rclose_ind\n", spans_indent);
537 spans_print_atm_conn(&objp->rcind_conn);
542 spans_print_parm_rclose_rsp(objp)
543 spans_parm_rclose_rsp *objp;
545 printf("%sspans_parm_rclose_rsp\n", spans_indent);
547 spans_print_atm_conn(&objp->rcrsp_conn);
548 spans_print_result(&objp->rcrsp_result);
553 spans_print_parm_rclose_cnf(objp)
554 spans_parm_rclose_cnf *objp;
556 printf("%sspans_parm_rclose_cnf\n", spans_indent);
558 spans_print_atm_conn(&objp->rccnf_conn);
559 spans_print_result(&objp->rccnf_result);
564 spans_print_parm_multi_req(objp)
565 spans_parm_multi_req *objp;
567 printf("%sspans_parm_multi_req\n", spans_indent);
569 spans_print_atm_conn(&objp->mureq_conn);
570 spans_print_aal(&objp->mureq_aal);
571 spans_print_resrc(&objp->mureq_desrsrc);
572 spans_print_resrc(&objp->mureq_minrsrc);
573 spans_print_vpvc(&objp->mureq_vpvc);
578 spans_print_parm_multi_ind(objp)
579 spans_parm_multi_ind *objp;
581 printf("%sspans_parm_multi_ind\n", spans_indent);
583 spans_print_atm_conn(&objp->muind_conn);
584 spans_print_aal(&objp->muind_aal);
585 spans_print_resrc(&objp->muind_desrsrc);
586 spans_print_resrc(&objp->muind_minrsrc);
587 spans_print_vpvc(&objp->muind_vpvc);
592 spans_print_parm_multi_rsp(objp)
593 spans_parm_multi_rsp *objp;
595 printf("%sspans_parm_multi_rsp\n", spans_indent);
597 spans_print_atm_conn(&objp->mursp_conn);
598 spans_print_result(&objp->mursp_result);
599 spans_print_resrc(&objp->mursp_rsrc);
600 spans_print_vpvc(&objp->mursp_vpvc);
605 spans_print_parm_multi_cnf(objp)
606 spans_parm_multi_cnf *objp;
608 printf("%sspans_parm_multi_cnf\n", spans_indent);
610 spans_print_atm_conn(&objp->mucnf_conn);
611 spans_print_result(&objp->mucnf_result);
612 spans_print_resrc(&objp->mucnf_rsrc);
613 spans_print_vpvc(&objp->mucnf_vpvc);
618 spans_print_parm_add_req(objp)
619 spans_parm_add_req *objp;
621 printf("%sspans_parm_add_req\n", spans_indent);
623 spans_print_atm_conn(&objp->adreq_desconn);
624 spans_print_atm_conn(&objp->adreq_xstconn);
629 spans_print_parm_add_ind(objp)
630 spans_parm_add_ind *objp;
632 printf("%sspans_parm_add_ind\n", spans_indent);
634 spans_print_atm_conn(&objp->adind_desconn);
635 spans_print_atm_conn(&objp->adind_xstconn);
640 spans_print_parm_add_rsp(objp)
641 spans_parm_add_rsp *objp;
643 printf("%sspans_parm_add_rsp\n", spans_indent);
645 spans_print_atm_conn(&objp->adrsp_conn);
646 spans_print_result(&objp->adrsp_result);
647 spans_print_resrc(&objp->adrsp_rsrc);
652 spans_print_parm_add_cnf(objp)
653 spans_parm_add_cnf *objp;
655 printf("%sspans_parm_add_cnf\n", spans_indent);
657 spans_print_atm_conn(&objp->adcnf_conn);
658 spans_print_result(&objp->adcnf_result);
659 spans_print_resrc(&objp->adcnf_rsrc);
664 spans_print_parm_join_req(objp)
665 spans_parm_join_req *objp;
667 printf("%sspans_parm_join_req\n", spans_indent);
669 spans_print_addr(&objp->jnreq_addr);
674 spans_print_parm_join_cnf(objp)
675 spans_parm_join_cnf *objp;
677 printf("%sspans_print_parm_join_cnf\n", spans_indent);
679 spans_print_addr(&objp->jncnf_addr);
680 spans_print_result(&objp->jncnf_result);
685 spans_print_parm_leave_req(objp)
686 spans_parm_leave_req *objp;
688 printf("%sspans_print_parm_leave_req\n", spans_indent);
690 spans_print_addr(&objp->lvreq_addr);
695 spans_print_parm_leave_cnf(objp)
696 spans_parm_leave_cnf *objp;
698 printf("%sspans_parm_leave_cnf\n", spans_indent);
700 spans_print_addr(&objp->lvcnf_addr);
701 spans_print_result(&objp->lvcnf_result);
706 spans_print_parm_vcir_ind(objp)
707 spans_parm_vcir_ind *objp;
709 printf("%sspans_parm_vcir_ind\n", spans_indent);
711 printf("%svrind_min %d\n", spans_indent, objp->vrind_min);
712 printf("%svrind_max %d\n", spans_indent, objp->vrind_max);
717 spans_print_parm_query_req(objp)
718 spans_parm_query_req *objp;
720 char query_type_str[80];
722 printf("%sspans_parm_query_req\n", spans_indent);
724 spans_print_atm_conn(&objp->qyreq_conn);
725 spans_query_type_str(&objp->qyreq_type,
726 query_type_str, sizeof(query_type_str));
727 printf("%sqyreq_type %s\n", spans_indent, query_type_str);
732 spans_print_parm_query_rsp(objp)
733 spans_parm_query_rsp *objp;
735 char query_type_str[80], state_type_str[80];
737 printf("%sspans_parm_query_rsp\n", spans_indent);
739 spans_print_atm_conn(&objp->qyrsp_conn);
740 spans_query_type_str(&objp->qyrsp_type,
741 query_type_str, sizeof(query_type_str));
742 printf("%sqyrsp_type %s\n", spans_indent, query_type_str);
743 spans_state_str(&objp->qyrsp_state,
744 state_type_str, sizeof(state_type_str));
745 printf("%sqyrsp_state %s\n", spans_indent, state_type_str);
746 printf("%sqyrsp_data 0x%x\n", spans_indent,
752 spans_print_msgbody(objp)
755 printf("%sspans_msgbody\n", spans_indent);
757 spans_print_msgtype(&objp->mb_type);
758 switch (objp->mb_type) {
760 spans_print_parm_stat_req(&objp->spans_msgbody_u.mb_stat_req);
763 spans_print_parm_stat_ind(&objp->spans_msgbody_u.mb_stat_ind);
766 spans_print_parm_stat_rsp(&objp->spans_msgbody_u.mb_stat_rsp);
769 spans_print_parm_open_req(&objp->spans_msgbody_u.mb_open_req);
772 spans_print_parm_open_ind(&objp->spans_msgbody_u.mb_open_ind);
775 spans_print_parm_open_rsp(&objp->spans_msgbody_u.mb_open_rsp);
778 spans_print_parm_open_cnf(&objp->spans_msgbody_u.mb_open_cnf);
780 case SPANS_CLOSE_REQ:
781 spans_print_parm_close_req(&objp->spans_msgbody_u.mb_close_req);
783 case SPANS_CLOSE_IND:
784 spans_print_parm_close_ind(&objp->spans_msgbody_u.mb_close_ind);
786 case SPANS_CLOSE_RSP:
787 spans_print_parm_close_rsp(&objp->spans_msgbody_u.mb_close_rsp);
789 case SPANS_CLOSE_CNF:
790 spans_print_parm_close_cnf(&objp->spans_msgbody_u.mb_close_cnf);
792 case SPANS_RCLOSE_REQ:
793 spans_print_parm_rclose_req(&objp->spans_msgbody_u.mb_rclose_req);
795 case SPANS_RCLOSE_IND:
796 spans_print_parm_rclose_ind(&objp->spans_msgbody_u.mb_rclose_ind);
798 case SPANS_RCLOSE_RSP:
799 spans_print_parm_rclose_rsp(&objp->spans_msgbody_u.mb_rclose_rsp);
801 case SPANS_RCLOSE_CNF:
802 spans_print_parm_rclose_cnf(&objp->spans_msgbody_u.mb_rclose_cnf);
804 case SPANS_MULTI_REQ:
805 spans_print_parm_multi_req(&objp->spans_msgbody_u.mb_multi_req);
807 case SPANS_MULTI_IND:
808 spans_print_parm_multi_ind(&objp->spans_msgbody_u.mb_multi_ind);
810 case SPANS_MULTI_RSP:
811 spans_print_parm_multi_rsp(&objp->spans_msgbody_u.mb_multi_rsp);
813 case SPANS_MULTI_CNF:
814 spans_print_parm_multi_cnf(&objp->spans_msgbody_u.mb_multi_cnf);
817 spans_print_parm_add_req(&objp->spans_msgbody_u.mb_add_req);
820 spans_print_parm_add_ind(&objp->spans_msgbody_u.mb_add_ind);
823 spans_print_parm_add_rsp(&objp->spans_msgbody_u.mb_add_rsp);
826 spans_print_parm_add_cnf(&objp->spans_msgbody_u.mb_add_cnf);
829 spans_print_parm_join_req(&objp->spans_msgbody_u.mb_join_req);
832 spans_print_parm_join_cnf(&objp->spans_msgbody_u.mb_join_cnf);
834 case SPANS_LEAVE_REQ:
835 spans_print_parm_leave_req(&objp->spans_msgbody_u.mb_leave_req);
837 case SPANS_LEAVE_CNF:
838 spans_print_parm_leave_cnf(&objp->spans_msgbody_u.mb_leave_cnf);
841 spans_print_parm_vcir_ind(&objp->spans_msgbody_u.mb_vcir_ind);
843 case SPANS_QUERY_REQ:
844 spans_print_parm_query_req(&objp->spans_msgbody_u.mb_query_req);
846 case SPANS_QUERY_RSP:
847 spans_print_parm_query_rsp(&objp->spans_msgbody_u.mb_query_rsp);
854 spans_print_msg(objp)
857 spans_indent = INIT_INDENT;
858 printf("%sspans_msg\n", spans_indent);
860 spans_print_version(&objp->sm_vers);
861 spans_print_msgbody(&objp->sm_body);
865 #else /* ifdef LONGPRINT */
868 spans_print_msgbody(objp)
871 char daddr[80], msgtype_str[80], result_str[80], saddr[80];
872 spans_parm_stat_req *streq_p;
873 spans_parm_stat_ind *stind_p;
874 spans_parm_stat_rsp *strsp_p;
875 spans_parm_open_req *opreq_p;
876 spans_parm_open_ind *opind_p;
877 spans_parm_open_rsp *oprsp_p;
878 spans_parm_open_cnf *opcnf_p;
879 spans_parm_close_req *clreq_p;
880 spans_parm_close_ind *clind_p;
881 spans_parm_close_rsp *clrsp_p;
882 spans_parm_close_cnf *clcnf_p;
883 spans_parm_rclose_req *rcreq_p;
884 spans_parm_rclose_ind *rcind_p;
885 spans_parm_rclose_rsp *rcrsp_p;
886 spans_parm_rclose_cnf *rccnf_p;
888 spans_msgtype_str(&objp->mb_type, msgtype_str, sizeof(msgtype_str));
889 printf("%s: ", msgtype_str);
890 switch (objp->mb_type) {
892 streq_p = &objp->spans_msgbody_u.mb_stat_req;
893 printf("es_epoch=0x%lx", streq_p->streq_es_epoch);
896 stind_p = &objp->spans_msgbody_u.mb_stat_ind;
897 strncpy(daddr, spans_addr_print(&stind_p->stind_es_addr),
899 strncpy(saddr, spans_addr_print(&stind_p->stind_sw_addr),
901 printf("sw_epoch=0x%lx, es_addr=%s, sw_addr=0x%s",
902 stind_p->stind_sw_epoch,
906 strsp_p = &objp->spans_msgbody_u.mb_stat_rsp;
907 strncpy(daddr, spans_addr_print(&strsp_p->strsp_es_addr),
909 printf("es_epoch=0x%lx, es_addr=%s",
910 strsp_p->strsp_es_epoch, daddr);
913 opreq_p = &objp->spans_msgbody_u.mb_open_req;
914 strncpy(daddr, spans_addr_print(&opreq_p->opreq_conn.con_dst),
916 strncpy(saddr, spans_addr_print(&opreq_p->opreq_conn.con_src),
918 printf("daddr=%s, saddr=%s, dsap=%d, ssap=%d, aal=%d",
920 opreq_p->opreq_conn.con_dsap,
921 opreq_p->opreq_conn.con_ssap,
923 if (opreq_p->opreq_vpvc.vpf_valid)
924 printf(", vp.vc=%d.%d",
925 SPANS_EXTRACT_VPI(opreq_p->opreq_vpvc.vpf_vpvc),
926 SPANS_EXTRACT_VCI(opreq_p->opreq_vpvc.vpf_vpvc));
929 opind_p = &objp->spans_msgbody_u.mb_open_ind;
930 strncpy(daddr, spans_addr_print(&opind_p->opind_conn.con_dst),
932 strncpy(saddr, spans_addr_print(&opind_p->opind_conn.con_src),
934 printf("daddr=%s, saddr=%s, dsap=%d, ssap=%d, aal=%d",
936 opind_p->opind_conn.con_dsap,
937 opind_p->opind_conn.con_ssap,
939 if (opind_p->opind_vpvc.vpf_valid)
940 printf(", vp.vc=%d.%d",
941 SPANS_EXTRACT_VPI(opind_p->opind_vpvc.vpf_vpvc),
942 SPANS_EXTRACT_VCI(opind_p->opind_vpvc.vpf_vpvc));
945 oprsp_p = &objp->spans_msgbody_u.mb_open_rsp;
946 strncpy(daddr, spans_addr_print(&oprsp_p->oprsp_conn.con_dst),
948 strncpy(saddr, spans_addr_print(&oprsp_p->oprsp_conn.con_src),
950 spans_result_str(&oprsp_p->oprsp_result, result_str,
952 printf("result=%s, daddr=%s, saddr=%s, dsap=%d, ssap=%d, vp.vc=%d.%d",
953 result_str, daddr, saddr,
954 oprsp_p->oprsp_conn.con_dsap,
955 oprsp_p->oprsp_conn.con_ssap,
956 SPANS_EXTRACT_VPI(oprsp_p->oprsp_vpvc),
957 SPANS_EXTRACT_VCI(oprsp_p->oprsp_vpvc));
960 opcnf_p = &objp->spans_msgbody_u.mb_open_cnf;
961 strncpy(daddr, spans_addr_print(&opcnf_p->opcnf_conn.con_dst),
963 strncpy(saddr, spans_addr_print(&opcnf_p->opcnf_conn.con_src),
965 spans_result_str(&opcnf_p->opcnf_result, result_str,
967 printf("result=%s, daddr=%s, saddr=%s, dsap=%d, ssap=%d, vp.vc=%d.%d",
968 result_str, daddr, saddr,
969 opcnf_p->opcnf_conn.con_dsap,
970 opcnf_p->opcnf_conn.con_ssap,
971 SPANS_EXTRACT_VPI(opcnf_p->opcnf_vpvc),
972 SPANS_EXTRACT_VCI(opcnf_p->opcnf_vpvc));
974 case SPANS_CLOSE_REQ:
975 clreq_p = &objp->spans_msgbody_u.mb_close_req;
976 strncpy(daddr, spans_addr_print(&clreq_p->clreq_conn.con_dst),
978 strncpy(saddr, spans_addr_print(&clreq_p->clreq_conn.con_src),
980 printf("daddr=%s, saddr=%s, dsap=%d, ssap=%d",
982 clreq_p->clreq_conn.con_dsap,
983 clreq_p->clreq_conn.con_ssap);
985 case SPANS_CLOSE_IND:
986 clind_p = &objp->spans_msgbody_u.mb_close_ind;
987 strncpy(daddr, spans_addr_print(&clind_p->clind_conn.con_dst),
989 strncpy(saddr, spans_addr_print(&clind_p->clind_conn.con_src),
991 printf("daddr=%s, saddr=%s, dsap=%d, ssap=%d",
993 clind_p->clind_conn.con_dsap,
994 clind_p->clind_conn.con_ssap);
996 case SPANS_CLOSE_RSP:
997 clrsp_p = &objp->spans_msgbody_u.mb_close_rsp;
998 strncpy(daddr, spans_addr_print(&clrsp_p->clrsp_conn.con_dst),
1000 strncpy(saddr, spans_addr_print(&clrsp_p->clrsp_conn.con_src),
1002 spans_result_str(&clrsp_p->clrsp_result, result_str,
1003 sizeof(result_str));
1004 printf("result=%s, daddr=%s, saddr=%s, dsap=%d, ssap=%d",
1005 result_str, daddr, saddr,
1006 clrsp_p->clrsp_conn.con_dsap,
1007 clrsp_p->clrsp_conn.con_ssap);
1009 case SPANS_CLOSE_CNF:
1010 clcnf_p = &objp->spans_msgbody_u.mb_close_cnf;
1011 strncpy(daddr, spans_addr_print(&clcnf_p->clcnf_conn.con_dst),
1013 strncpy(saddr, spans_addr_print(&clcnf_p->clcnf_conn.con_src),
1015 spans_result_str(&clcnf_p->clcnf_result, result_str,
1016 sizeof(result_str));
1017 printf("result=%s, daddr=%s, saddr=%s, dsap=%d, ssap=%d",
1018 result_str, daddr, saddr,
1019 clcnf_p->clcnf_conn.con_dsap,
1020 clcnf_p->clcnf_conn.con_ssap);
1022 case SPANS_RCLOSE_REQ:
1023 rcreq_p = &objp->spans_msgbody_u.mb_rclose_req;
1024 strncpy(daddr, spans_addr_print(&rcreq_p->rcreq_conn.con_dst),
1026 strncpy(saddr, spans_addr_print(&rcreq_p->rcreq_conn.con_src),
1028 printf("daddr=%s, saddr=%s, dsap=%d, ssap=%d",
1030 rcreq_p->rcreq_conn.con_dsap,
1031 rcreq_p->rcreq_conn.con_ssap);
1033 case SPANS_RCLOSE_IND:
1034 rcind_p = &objp->spans_msgbody_u.mb_rclose_ind;
1035 strncpy(daddr, spans_addr_print(&rcind_p->rcind_conn.con_dst),
1037 strncpy(saddr, spans_addr_print(&rcind_p->rcind_conn.con_src),
1039 printf("daddr=%s, saddr=%s, dsap=%d, ssap=%d",
1041 rcind_p->rcind_conn.con_dsap,
1042 rcind_p->rcind_conn.con_ssap);
1044 case SPANS_RCLOSE_RSP:
1045 rcrsp_p = &objp->spans_msgbody_u.mb_rclose_rsp;
1046 strncpy(daddr, spans_addr_print(&rcrsp_p->rcrsp_conn.con_dst),
1048 strncpy(saddr, spans_addr_print(&rcrsp_p->rcrsp_conn.con_src),
1050 spans_result_str(&rcrsp_p->rcrsp_result, result_str,
1051 sizeof(result_str));
1052 printf("result=%s, daddr=%s, saddr=%s, dsap=%d, ssap=%d",
1053 result_str, daddr, saddr,
1054 rcrsp_p->rcrsp_conn.con_dsap,
1055 rcrsp_p->rcrsp_conn.con_ssap);
1057 case SPANS_RCLOSE_CNF:
1058 rccnf_p = &objp->spans_msgbody_u.mb_rclose_cnf;
1059 strncpy(daddr, spans_addr_print(&rccnf_p->rccnf_conn.con_dst),
1061 strncpy(saddr, spans_addr_print(&rccnf_p->rccnf_conn.con_src),
1063 spans_result_str(&rccnf_p->rccnf_result, result_str,
1064 sizeof(result_str));
1065 printf("result=%s, daddr=%s, saddr=%s, dsap=%d, ssap=%d",
1066 result_str, daddr, saddr,
1067 rccnf_p->rccnf_conn.con_dsap,
1068 rccnf_p->rccnf_conn.con_ssap);
1077 spans_print_msg(objp)
1081 spans_indent = INIT_INDENT;
1083 spans_print_msgbody(&objp->sm_body);
1086 #endif /* ifdef LONGPRINT */