⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test-sctp_n.c

📁 OpenSS7 This the fourth public release of the OpenSS7 Master Package. See README in the release for
💻 C
📖 第 1 页 / 共 5 页
字号:
#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 (verbose > 0)		print_double_int(child, msgs, child, state);	print_failure(child, failure_string);}vo

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -