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

📄 test-inet_udp.c

📁 This a separate release of the OpenSS7 X/Open XTI/TLI library, TLI modules (timod, tirdwr) and the I
💻 C
📖 第 1 页 / 共 5 页
字号:
		switch (oh->name) {		case T_UDP_CHECKSUM:			return ("T_UDP_CHECKSUM");		}		break;	case T_INET_TCP:		switch (oh->name) {		case T_TCP_NODELAY:			return ("T_TCP_NODELAY");		case T_TCP_MAXSEG:			return ("T_TCP_MAXSEG");		case T_TCP_KEEPALIVE:			return ("T_TCP_KEEPALIVE");		case T_TCP_CORK:			return ("T_TCP_CORK");		case T_TCP_KEEPIDLE:			return ("T_TCP_KEEPIDLE");		case T_TCP_KEEPINTVL:			return ("T_TCP_KEEPINTVL");		case T_TCP_KEEPCNT:			return ("T_TCP_KEEPCNT");		case T_TCP_SYNCNT:			return ("T_TCP_SYNCNT");		case T_TCP_LINGER2:			return ("T_TCP_LINGER2");		case T_TCP_DEFER_ACCEPT:			return ("T_TCP_DEFER_ACCEPT");		case T_TCP_WINDOW_CLAMP:			return ("T_TCP_WINDOW_CLAMP");		case T_TCP_INFO:			return ("T_TCP_INFO");		case T_TCP_QUICKACK:			return ("T_TCP_QUICKACK");		}		break;	case T_INET_SCTP:		switch (oh->name) {		case T_SCTP_NODELAY:			return ("T_SCTP_NODELAY");		case T_SCTP_CORK:			return ("T_SCTP_CORK");		case T_SCTP_PPI:			return ("T_SCTP_PPI");		case T_SCTP_SID:			return ("T_SCTP_SID");		case T_SCTP_SSN:			return ("T_SCTP_SSN");		case T_SCTP_TSN:			return ("T_SCTP_TSN");		case T_SCTP_RECVOPT:			return ("T_SCTP_RECVOPT");		case T_SCTP_COOKIE_LIFE:			return ("T_SCTP_COOKIE_LIFE");		case T_SCTP_SACK_DELAY:			return ("T_SCTP_SACK_DELAY");		case T_SCTP_PATH_MAX_RETRANS:			return ("T_SCTP_PATH_MAX_RETRANS");		case T_SCTP_ASSOC_MAX_RETRANS:			return ("T_SCTP_ASSOC_MAX_RETRANS");		case T_SCTP_MAX_INIT_RETRIES:			return ("T_SCTP_MAX_INIT_RETRIES");		case T_SCTP_HEARTBEAT_ITVL:			return ("T_SCTP_HEARTBEAT_ITVL");		case T_SCTP_RTO_INITIAL:			return ("T_SCTP_RTO_INITIAL");		case T_SCTP_RTO_MIN:			return ("T_SCTP_RTO_MIN");		case T_SCTP_RTO_MAX:			return ("T_SCTP_RTO_MAX");		case T_SCTP_OSTREAMS:			return ("T_SCTP_OSTREAMS");		case T_SCTP_ISTREAMS:			return ("T_SCTP_ISTREAMS");		case T_SCTP_COOKIE_INC:			return ("T_SCTP_COOKIE_INC");		case T_SCTP_THROTTLE_ITVL:			return ("T_SCTP_THROTTLE_ITVL");		case T_SCTP_MAC_TYPE:			return ("T_SCTP_MAC_TYPE");		case T_SCTP_CKSUM_TYPE:			return ("T_SCTP_CKSUM_TYPE");		case T_SCTP_ECN:			return ("T_SCTP_ECN");		case T_SCTP_ALI:			return ("T_SCTP_ALI");		case T_SCTP_ADD:			return ("T_SCTP_ADD");		case T_SCTP_SET:			return ("T_SCTP_SET");		case T_SCTP_ADD_IP:			return ("T_SCTP_ADD_IP");		case T_SCTP_DEL_IP:			return ("T_SCTP_DEL_IP");		case T_SCTP_SET_IP:			return ("T_SCTP_SET_IP");		case T_SCTP_PR:			return ("T_SCTP_PR");		case T_SCTP_LIFETIME:			return ("T_SCTP_LIFETIME");		case T_SCTP_DISPOSITION:			return ("T_SCTP_DISPOSITION");		case T_SCTP_MAX_BURST:			return ("T_SCTP_MAX_BURST");		case T_SCTP_HB:			return ("T_SCTP_HB");		case T_SCTP_RTO:			return ("T_SCTP_RTO");		case T_SCTP_MAXSEG:			return ("T_SCTP_MAXSEG");		case T_SCTP_STATUS:			return ("T_SCTP_STATUS");		case T_SCTP_DEBUG:			return ("T_SCTP_DEBUG");		}		break;	}	return ("(unknown name)");}char *yesno_string(struct t_opthdr *oh){	switch (*((t_uscalar_t *) T_OPT_DATA(oh))) {	case T_YES:		return ("T_YES");	case T_NO:		return ("T_NO");	default:		return ("(invalid)");	}}char *value_string(struct t_opthdr *oh){	static char buf[64] = "(invalid)";	if (oh->len == sizeof(*oh))		return (NULL);	switch (oh->level) {	case XTI_GENERIC:		switch (oh->name) {		case XTI_DEBUG:			break;		case XTI_LINGER:			break;		case XTI_RCVBUF:			break;		case XTI_RCVLOWAT:			break;		case XTI_SNDBUF:			break;		case XTI_SNDLOWAT:			break;		}		break;	case T_INET_IP:		switch (oh->name) {		case T_IP_OPTIONS:			break;		case T_IP_TOS:			if (oh->len = sizeof(*oh) + sizeof(unsigned char))				snprintf(buf, sizeof(buf), "0x%02x", *((unsigned char *) T_OPT_DATA(oh)));			return buf;		case T_IP_TTL:			if (oh->len = sizeof(*oh) + sizeof(unsigned char))				snprintf(buf, sizeof(buf), "0x%02x", *((unsigned char *) T_OPT_DATA(oh)));			return buf;		case T_IP_REUSEADDR:			return yesno_string(oh);		case T_IP_DONTROUTE:			return yesno_string(oh);		case T_IP_BROADCAST:			return yesno_string(oh);		case T_IP_ADDR:			if (oh->len == sizeof(*oh) + sizeof(uint32_t)) {				uint32_t addr = *((uint32_t *) T_OPT_DATA(oh));				snprintf(buf, sizeof(buf), "%d.%d.%d.%d", (addr >> 0) & 0x00ff, (addr >> 8) & 0x00ff, (addr >> 16) & 0x00ff, (addr >> 24) & 0x00ff);			}			return buf;		}		break;	case T_INET_UDP:		switch (oh->name) {		case T_UDP_CHECKSUM:			return yesno_string(oh);		}		break;	case T_INET_TCP:		switch (oh->name) {		case T_TCP_NODELAY:			return yesno_string(oh);		case T_TCP_MAXSEG:			if (oh->len == sizeof(*oh) + sizeof(t_uscalar_t))				snprintf(buf, sizeof(buf), "%lu", *((t_uscalar_t *) T_OPT_DATA(oh)));			return buf;		case T_TCP_KEEPALIVE:			return yesno_string(oh);		case T_TCP_CORK:			return yesno_string(oh);		case T_TCP_KEEPIDLE:			break;		case T_TCP_KEEPINTVL:			break;		case T_TCP_KEEPCNT:			break;		case T_TCP_SYNCNT:			break;		case T_TCP_LINGER2:			break;		case T_TCP_DEFER_ACCEPT:			break;		case T_TCP_WINDOW_CLAMP:			break;		case T_TCP_INFO:			break;		case T_TCP_QUICKACK:			break;		}		break;	case T_INET_SCTP:		switch (oh->name) {		case T_SCTP_NODELAY:			return yesno_string(oh);		case T_SCTP_CORK:			return yesno_string(oh);		case T_SCTP_PPI:			break;		case T_SCTP_SID:			break;		case T_SCTP_SSN:			break;		case T_SCTP_TSN:			break;		case T_SCTP_RECVOPT:			return yesno_string(oh);		case T_SCTP_COOKIE_LIFE:			break;		case T_SCTP_SACK_DELAY:			break;		case T_SCTP_PATH_MAX_RETRANS:			break;		case T_SCTP_ASSOC_MAX_RETRANS:			break;		case T_SCTP_MAX_INIT_RETRIES:			break;		case T_SCTP_HEARTBEAT_ITVL:			break;		case T_SCTP_RTO_INITIAL:			break;		case T_SCTP_RTO_MIN:			break;		case T_SCTP_RTO_MAX:			break;		case T_SCTP_OSTREAMS:			break;		case T_SCTP_ISTREAMS:			break;		case T_SCTP_COOKIE_INC:			break;		case T_SCTP_THROTTLE_ITVL:			break;		case T_SCTP_MAC_TYPE:			break;		case T_SCTP_CKSUM_TYPE:			break;		case T_SCTP_ECN:			break;		case T_SCTP_ALI:			break;		case T_SCTP_ADD:			break;		case T_SCTP_SET:			break;		case T_SCTP_ADD_IP:			break;		case T_SCTP_DEL_IP:			break;		case T_SCTP_SET_IP:			break;		case T_SCTP_PR:			break;		case T_SCTP_LIFETIME:			break;		case T_SCTP_DISPOSITION:			break;		case T_SCTP_MAX_BURST:			break;		case T_SCTP_HB:			break;		case T_SCTP_RTO:			break;		case T_SCTP_MAXSEG:			break;		case T_SCTP_STATUS:			break;		case T_SCTP_DEBUG:			break;		}		break;	}	return ("(unknown value)");}voidprint_options(int fd, char *opt_ptr, size_t opt_len){	struct t_opthdr *oh;	if (verbose < 4)		return;	for (oh = _T_OPT_FIRSTHDR_OFS(opt_ptr, opt_len, 0); oh; oh = _T_OPT_NEXTHDR_OFS(opt_ptr, opt_len, oh, 0)) {		char *level = level_string(oh);		char *name = name_string(oh);		char *status = status_string(oh);		char *value = value_string(oh);		int len = oh->len - sizeof(*oh);		unsigned char *val = _T_OPT_DATA_OFS(oh, 0);		if (len < 0)			break;		if (fd == conn_fd) {#if 0			fprintf(stdout, "%-20s|                               |  |                    \n", level);#endif			fprintf(stdout, "%-20s|                               |  |                    \n", name);			if (status)				fprintf(stdout, "%-20s|                               |  |                    \n", status);			if (value)				fprintf(stdout, "%-20s|                               |  |                    \n", value);#if 0			fprintf(stdout, "len = %03d           |                               |  |                    \n", len);#endif		}		if (fd == resp_fd) {#if 0			fprintf(stdout, "                    |                               |  |     %-15s\n", level);#endif			fprintf(stdout, "                    |                               |  |     %-15s\n", name);			if (status)				fprintf(stdout, "                    |                               |  |     %-15s\n", status);			if (value)				fprintf(stdout, "                    |                               |  |     %-15s\n", value);#if 0			fprintf(stdout, "                    |                               |  |     len = %03d      \n", len);#endif		}		if (fd == list_fd) {#if 0			fprintf(stdout, "                    |                               |  |     %-15s\n", level);#endif			fprintf(stdout, "                    |                               |  |     %-15s\n", name);			if (status)				fprintf(stdout, "                    |                               |  |     %-15s\n", status);			if (value)				fprintf(stdout, "                    |                               |  |     %-15s\n", value);#if 0			fprintf(stdout, "                    |                               |  |     len = %03d      \n", len);#endif		}	}}char *mgmtflag_string(t_uscalar_t flag){	switch (flag) {	case T_NEGOTIATE:		return ("T_NEGOTIATE");	case T_CHECK:		return ("T_CHECK");	case T_DEFAULT:		return ("T_DEFAULT");	case T_SUCCESS:		return ("T_SUCCESS");	case T_FAILURE:		return ("T_FAILURE");	case T_CURRENT:		return ("T_CURRENT");	case T_PARTSUCCESS:		return ("T_PARTSUCCESS");	case T_READONLY:		return ("T_READONLY");	case T_NOTSUPPORT:		return ("T_NOTSUPPORT");	}	return "(unknown flag)";}voidprint_mgmtflag(int fd, t_uscalar_t flag){	if (verbose < 2)		return;	if (fd == conn_fd) {

⌨️ 快捷键说明

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