📄 test-sctp_n2.c
字号:
}}#if 0char *size_string(t_uscalar_t size){ static char buf[128]; switch (size) { case T_INFINITE: return ("T_INFINITE"); case T_INVALID: return ("T_INVALID"); case T_UNSPEC: return ("T_UNSPEC"); } snprintf(buf, sizeof(buf), "%lu", (ulong) size); return buf;}#endifconst char *reset_reason_string(np_ulong RESET_reason){ switch (RESET_reason) { case N_CONGESTION: return ("N_CONGESTION"); case N_RESET_UNSPECIFIED: return ("N_RESET_UNSPECIFIED"); case N_USER_RESYNC: return ("N_USER_RESYNC"); case N_REASON_UNDEFINED: return ("N_REASON_UNDEFINED"); case N_UD_UNDEFINED: return ("N_UD_UNDEFINED"); case N_UD_TD_EXCEEDED: return ("N_UD_TD_EXCEEDED"); case N_UD_CONGESTION: return ("N_UD_CONGESTION"); case N_UD_QOS_UNAVAIL: return ("N_UD_QOS_UNAVAIL"); case N_UD_LIFE_EXCEEDED: return ("N_UD_LIFE_EXCEEDED"); case N_UD_ROUTE_UNAVAIL: return ("N_UD_ROUTE_UNAVAIL"); case N_UD_SEG_REQUIRED: return ("N_UD_SEG_REQUIRED"); default: return ("(unknown)"); }}char *reset_orig_string(np_ulong RESET_orig){ switch (RESET_orig) { case N_USER: return ("N_USER"); case N_PROVIDER: return ("N_PROVIDER"); case N_UNDEFINED: return ("N_UNDEFINED"); default: return ("(unknown)"); }}voidprint_proto(char *pro_ptr, size_t pro_len){ uint32_t *p = (uint32_t *) pro_ptr; size_t pnum = pro_len / sizeof(p[0]); if (pro_len) { int i; if (!pnum) printf("(PROTOID_length = %lu)", (ulong) pro_len); for (i = 0; i < pnum; i++) { printf("%s%d", i ? "," : "", p[i]); } } else printf("(no protoids)"); printf("\n");}voidprint_options(int child, const char *cmd_buf, size_t qos_ofs, size_t qos_len){ unsigned char *qos_ptr = (unsigned char *) (cmd_buf + qos_ofs); N_qos_sctp_t *qos = (N_qos_sctp_t *) qos_ptr; char buf[64]; if (verbose < 3 || !show) return; if (qos_len) { switch (qos->n_qos_type) { case N_QOS_SEL_CONN_SCTP: snprintf(buf, sizeof(buf), "N_QOS_SEL_CONN_SCTP:"); print_string(child, buf); snprintf(buf, sizeof(buf), " i_streams = %ld,", (long) qos->n_qos_conn.i_streams); print_string(child, buf); snprintf(buf, sizeof(buf), " o_streams = %ld ", (long) qos->n_qos_conn.o_streams); print_string(child, buf); break; case N_QOS_SEL_DATA_SCTP: snprintf(buf, sizeof(buf), "DATA: "); print_string(child, buf); snprintf(buf, sizeof(buf), " ppi = %ld,", (long) qos->n_qos_data.ppi); print_string(child, buf); snprintf(buf, sizeof(buf), " sid = %ld,", (long) qos->n_qos_data.sid); print_string(child, buf); snprintf(buf, sizeof(buf), " ssn = %ld,", (long) qos->n_qos_data.ssn); print_string(child, buf); snprintf(buf, sizeof(buf), " tsn = %lu,", (ulong) qos->n_qos_data.tsn); print_string(child, buf); snprintf(buf, sizeof(buf), " more = %ld", (long) qos->n_qos_data.more); print_string(child, buf); break; case N_QOS_SEL_INFO_SCTP: snprintf(buf, sizeof(buf), "N_QOS_SEL_INFO_SCTP: "); print_string(child, buf); snprintf(buf, sizeof(buf), " i_streams = %ld,", (long) qos->n_qos_info.i_streams); print_string(child, buf); snprintf(buf, sizeof(buf), " o_streams = %ld,", (long) qos->n_qos_info.o_streams); print_string(child, buf); snprintf(buf, sizeof(buf), " ppi = %ld,", (long) qos->n_qos_info.ppi); print_string(child, buf); snprintf(buf, sizeof(buf), " sid = %ld,", (long) qos->n_qos_info.sid); print_string(child, buf); snprintf(buf, sizeof(buf), " max_inits = %ld,", (long) qos->n_qos_info.max_inits); print_string(child, buf); snprintf(buf, sizeof(buf), " max_retrans = %ld,", (long) qos->n_qos_info.max_retrans); print_string(child, buf); snprintf(buf, sizeof(buf), " max_sack = %ld,", (long) qos->n_qos_info.max_sack); print_string(child, buf); snprintf(buf, sizeof(buf), " ck_life = %ld,", (long) qos->n_qos_info.ck_life); print_string(child, buf); snprintf(buf, sizeof(buf), " ck_inc = %ld,", (long) qos->n_qos_info.ck_inc); print_string(child, buf); snprintf(buf, sizeof(buf), " hmac = %ld,", (long) qos->n_qos_info.hmac); print_string(child, buf); snprintf(buf, sizeof(buf), " throttle = %ld,", (long) qos->n_qos_info.throttle); print_string(child, buf); snprintf(buf, sizeof(buf), " rto_ini = %ld,", (long) qos->n_qos_info.rto_ini); print_string(child, buf); snprintf(buf, sizeof(buf), " rto_min = %ld,", (long) qos->n_qos_info.rto_min); print_string(child, buf); snprintf(buf, sizeof(buf), " rto_max = %ld,", (long) qos->n_qos_info.rto_max); print_string(child, buf); snprintf(buf, sizeof(buf), " rtx_path = %ld,", (long) qos->n_qos_info.rtx_path); print_string(child, buf); snprintf(buf, sizeof(buf), " hb_itvl = %ld", (long) qos->n_qos_info.hb_itvl); print_string(child, buf); snprintf(buf, sizeof(buf), " options = "); print_string(child, buf); if (!qos->n_qos_info.options) { snprintf(buf, sizeof(buf), "(none)"); print_string(child, buf); } if (qos->n_qos_info.options & SCTP_OPTION_DROPPING) { snprintf(buf, sizeof(buf), " DEBUG-DROPPING"); print_string(child, buf); } if (qos->n_qos_info.options & SCTP_OPTION_BREAK) { snprintf(buf, sizeof(buf), " DEBUG-BREAK"); print_string(child, buf); } if (qos->n_qos_info.options & SCTP_OPTION_DBREAK) { snprintf(buf, sizeof(buf), " DEBUG-DBREAK"); print_string(child, buf); } if (qos->n_qos_info.options & SCTP_OPTION_RANDOM) { snprintf(buf, sizeof(buf), " DEBUG-RANDOM"); print_string(child, buf); } break; case N_QOS_RANGE_INFO_SCTP: snprintf(buf, sizeof(buf), "N_QOS_RANGE_INFO_SCTP: "); print_string(child, buf); break; default: snprintf(buf, sizeof(buf), "(unknown qos structure %lu)\n", (ulong) qos->n_qos_type); print_string(child, buf); break; } } else { snprintf(buf, sizeof(buf), "(no qos)"); print_string(child, buf); }}voidprint_size(ulong size){ switch (size) { case -1: printf("UNLIMITED\n"); break; case -2: printf("UNDEFINED\n"); break; default: printf("%lu\n", size); break; }}const char *prim_string(int prim){ switch (prim) { case N_CONN_REQ: return ("N_CONN_REQ------"); case N_CONN_RES: return ("N_CONN_RES------"); case N_DISCON_REQ: return ("N_DISCON_REQ----"); case N_DATA_REQ: return ("N_DATA_REQ------"); case N_EXDATA_REQ: return ("N_EXDATA_REQ----"); case N_INFO_REQ: return ("N_INFO_REQ------"); case N_BIND_REQ: return ("N_BIND_REQ------"); case N_UNBIND_REQ: return ("N_UNBIND_REQ----"); case N_UNITDATA_REQ: return ("N_UNITDATA_REQ--"); case N_OPTMGMT_REQ: return ("N_OPTMGMT_REQ---"); case N_RESET_REQ: return ("N_RESET_REQ-----"); case N_RESET_RES: return ("N_RESET_RES-----"); case N_CONN_IND: return ("N_CONN_IND------"); case N_CONN_CON: return ("N_CONN_CON------"); case N_DISCON_IND: return ("N_DISCON_IND----"); case N_DATA_IND: return ("N_DATA_IND------"); case N_EXDATA_IND: return ("N_EXDATA_IND----"); case N_INFO_ACK: return ("N_INFO_ACK------"); case N_BIND_ACK: return ("N_BIND_ACK------"); case N_ERROR_ACK: return ("N_ERROR_ACK-----"); case N_OK_ACK: return ("N_OK_ACK--------"); case N_UNITDATA_IND: return ("N_UNITDATA_IND--"); case N_UDERROR_IND: return ("N_UDERROR_IND---"); case N_RESET_IND: return ("N_RESET_IND-----"); case N_RESET_CON: return ("N_RESET_CON-----"); case N_DATACK_REQ: return ("N_DATACK_REQ----"); case N_DATACK_IND: return ("N_DATACK_IND----"); default: return ("N_????_??? -----"); }}voidprint_simple(int child, const char *msgs[]){ dummy = lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, msgs[child]); fflush(stdout); dummy = lockf(fileno(stdout), F_ULOCK, 0);}voidprint_simple_int(int child, const char *msgs[], int val){ dummy = lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, msgs[child], val); fflush(stdout); dummy = lockf(fileno(stdout), F_ULOCK, 0);}voidprint_double_int(int child, const char *msgs[], int val, int val2){ dummy = lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, msgs[child], val, val2); fflush(stdout); dummy = lockf(fileno(stdout), F_ULOCK, 0);}voidprint_triple_int(int child, const char *msgs[], int val, int val2, int val3){ dummy = lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, msgs[child], val, val2, val3); fflush(stdout); dummy = lockf(fileno(stdout), F_ULOCK, 0);}voidprint_simple_string(int child, const char *msgs[], const char *string){ dummy = lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, msgs[child], string); fflush(stdout); dummy = lockf(fileno(stdout), F_ULOCK, 0);}voidprint_string_state(int child, const char *msgs[], const char *string){ dummy = lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, msgs[child], string, child, state); fflush(stdout); dummy = lockf(fileno(stdout), F_ULOCK, 0);}voidprint_triple_string(int child, const char *msgs[], const char *string){ dummy = lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, msgs[child], "", child, state); fprintf(stdout, msgs[child], string, child, state); fprintf(stdout, msgs[child], "", child, state); fflush(stdout); dummy = lockf(fileno(stdout), F_ULOCK, 0);}voidprint_more(int child){ show = 1;}voidprint_less(int child){ static const char *msgs[] = { " . %1$6.6s . | <------ . ------> : [%2$d:%3$03d]\n", " : <------ . ------> | . %1$-6.6s . [%2$d:%3$03d]\n", " : <------ . ------> | : . %1$-6.6s . [%2$d:%3$03d]\n", " . %1$6.6s . : <------ . ------> :> : . %1$-6.6s . [%2$d:%3$03d]\n", }; if (show && verbose > 0) print_triple_string(child, msgs, "(more)"); show = 0;}voidprint_pipe(int child){ static const char *msgs[] = { " pipe() ----->v v<------------------------------>v \n", " v v<------------------------------>v<----- pipe() \n", " . . . \n", }; if (show && verbose > 3) print_simple(child, msgs);}voidprint_open(int child, const char *name){ static const char *msgs[] = { " open() ----->v %-30.30s . \n", " | %-30.30s v<----- open() \n", " | %-30.30s v<-+------ open() \n", " . %-30.30s . . \n", }; if (show && verbose > 3) print_simple_string(child, msgs, name);}voidprint_close(int child){ static const char *msgs[] = { " close() ----->X | \n", " . X<----- close() \n", " . X<-+------ close() \n", " . . . \n", }; if (show && verbose > 3) print_simple(child, msgs);}voidprint_preamble(int child){ static const char *msgs[] = { "--------------------+-------------Preamble-----------+--+ \n", " +-------------Preamble-----------+ +-------------------\n", " +-------------Preamble-----------+--+-------------------\n", "--------------------+-------------Preamble-----------+--+-------------------\n", }; if (verbose > 0) print_simple(child, msgs);}voidprint_failure(int child, const char *string){ static const char *msgs[] = { "....................|%-32.32s|..| [%d:%03d]\n", " |%-32.32s| |................... [%d:%03d]\n", " |%-32.32s|...................... [%d:%03d]\n", "....................|%-32.32s|..|................... [%d:%03d]\n", }; if (string && strnlen(string, 32) > 0 && verbose > 0) print_string_state(child, msgs, string);}voidprint_notapplicable(int child){ static const char *msgs[] = { "X-X-X-X-X-X-X-X-X-X-|X-X-X-X-X NOT APPLICABLE -X-X-X-|X-| [%d:%03d]\n", " |X-X-X-X-X NOT APPLICABLE -X-X-X-| |X-X-X-X-X-X-X-X-X-X [%d:%03d]\n", " |X-X-X-X-X NOT APPLICABLE -X-X-X-|X-|X-X-X-X-X-X-X-X-X-X [%d:%03d]\n", "X-X-X-X-X-X-X-X-X-X-|X-X-X-X-X NOT APPLICABLE -X-X-X-|X-|X-X-X-X-X-X-X-X-X-X [%d:%03d]\n", }; if (verbose > 0) print_double_int(child, msgs, child, state); print_failure(child, failure_string);}voidprint_skipped(int child){ static const char *msgs[] = { "::::::::::::::::::::|:::::::::::: SKIPPED :::::::::::|::| [%d:%03d]\n", " |:::::::::::: SKIPPED :::::::::::| |::::::::::::::::::: [%d:%03d]\n", " |:::::::::::: SKIPPED :::::::::::|::|::::::::::::::::::: [%d:%03d]\n", "::::::::::::::::::::|:::::::::::: SKIPPED :::::::::::|::|::::::::::::::::::: [%d:%03d]\n", }; if (verbose > 0) print_double_int(child, msgs, child, state); print_failure(child, failure_string);}voidprint_inconclusive(int child){ static const char *msgs[] = { "????????????????????|?????????? INCONCLUSIVE ????????|??| [%d:%03d]\n", " |?????????? INCONCLUSIVE ????????| |??????????????????? [%d:%03d]\n", " |?????????? INCONCLUSIVE ????????|??|??????????????????? [%d:%03d]\n", "????????????????????|?????????? INCONCLUSIVE ????????|??|??????????????????? [%d:%03d]\n", }; if (verbose > 0) print_double_int(child, msgs, child, state); print_failure(child, failure_string);}voidprint_test(int child){ static const char *msgs[] = { "--------------------+---------------Test-------------+--+ \n", " +---------------Test-------------+ +-------------------\n", " +---------------Test-------------+--+-------------------\n", "--------------------+---------------Test-------------+--+-------------------\n", }; if (verbose > 0) print_simple(child, msgs);}voidprint_failed(int child){ static const char *msgs[] = { "XXXXXXXXXXXXXXXXXXXX|XXXXXXXXXXXXX FAILED XXXXXXXXXXX|XX| [%d:%03d]\n", " |XXXXXXXXXXXXX FAILED XXXXXXXXXXX| |XXXXXXXXXXXXXXXXXXX [%d:%03d]\n", " |XXXXXXXXXXXXX FAILED XXXXXXXXXXX|XX|XXXXXXXXXXXXXXXXXXX [%d:%03d]\n", "XXXXXXXXXXXXXXXXXXXX|XXXXXXXXXXXXX FAILED XXXXXXXXXXX|XX|XXXXXXXXXXXXXXXXXXX [%d:%03d]\n", }; if (verbose > 0) print_double_int(child, msgs, child, state); print_failure(child, failure_string);}voidprint_script_error(int child){ static const char *msgs[] = { "####################|########### SCRIPT ERROR #######|##| [%d:%03d]\n", " |########### SCRIPT ERROR #######| |################### [%d:%03d]\n", " |########### SCRIPT ERROR #######|##|################### [%d:%03d]\n", "####################|########### SCRIPT ERROR #######|##|################### [%d:%03d]\n", }; if (ver
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -