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

📄 test-xnet.c

📁 OpenSS7 This the fourth public release of the OpenSS7 Master Package. See README in the release for
💻 C
📖 第 1 页 / 共 5 页
字号:
	case TS_WIND_ORDREL:		return ("TS_WIND_ORDREL");	case TS_WREQ_ORDREL:		return ("TS_WRES_ORDREL");	case TS_WACK_DREQ6:		return ("TS_WACK_DREQ6");	case TS_WACK_DREQ7:		return ("TS_WACK_DREQ7");	case TS_WACK_DREQ9:		return ("TS_WACK_DREQ9");	case TS_WACK_DREQ10:		return ("TS_WACK_DREQ10");	case TS_WACK_DREQ11:		return ("TS_WACK_DREQ11");	default:		return ("(unknown)");	}}#if 0voidprint_addr(char *add_ptr, size_t add_len){	sctp_addr_t *a = (sctp_addr_t *) add_ptr;	size_t anum = add_len >= sizeof(a->port) ? (add_len - sizeof(a->port)) / sizeof(a->addr[0]) : 0;	dummy = lockf(fileno(stdout), F_LOCK, 0);	if (add_len) {		int i;		if (add_len != sizeof(a->port) + anum * sizeof(a->addr[0]))			fprintf(stdout, "Aaarrg! add_len = %d, anum = %d, ", add_len, anum);		fprintf(stdout, "[%d]", ntohs(a->port));		for (i = 0; i < anum; i++) {			fprintf(stdout, "%s%d.%d.%d.%d", i ? "," : "", (a->addr[i] >> 0) & 0xff, (a->addr[i] >> 8) & 0xff, (a->addr[i] >> 16) & 0xff, (a->addr[i] >> 24) & 0xff);		}	} else		fprintf(stdout, "(no address)");	fprintf(stdout, "\n");	fflush(stdout);	dummy = lockf(fileno(stdout), F_ULOCK, 0);}char *addr_string(char *add_ptr, size_t add_len){	static char buf[128];	size_t len = 0;	sctp_addr_t *a = (sctp_addr_t *) add_ptr;	size_t anum = add_len >= sizeof(a->port) ? (add_len - sizeof(a->port)) / sizeof(a->addr[0]) : 0;	if (add_len) {		int i;		if (add_len != sizeof(a->port) + anum * sizeof(a->addr[0]))			len += snprintf(buf + len, sizeof(buf) - len, "Aaarrg! add_len = %d, anum = %d, ", add_len, anum);		len += snprintf(buf + len, sizeof(buf) - len, "[%d]", ntohs(a->port));		for (i = 0; i < anum; i++) {			len += snprintf(buf + len, sizeof(buf) - len, "%s%d.%d.%d.%d", i ? "," : "", (a->addr[i] >> 0) & 0xff, (a->addr[i] >> 8) & 0xff, (a->addr[i] >> 16) & 0xff, (a->addr[i] >> 24) & 0xff);		}	} else		len += snprintf(buf + len, sizeof(buf) - len, "(no address)");	/* len += snprintf(buf + len, sizeof(buf) - len, "\0"); */	return buf;}voidprint_addrs(int fd, char *add_ptr, size_t add_len){	fprintf(stdout, "Stupid!\n");}#elsevoidprint_addr(char *add_ptr, size_t add_len){	struct sockaddr_in *a = (struct sockaddr_in *) add_ptr;	dummy = lockf(fileno(stdout), F_LOCK, 0);	if (add_len) {		if (add_len != sizeof(*a))			fprintf(stdout, "Aaarrg! add_len = %lu, ", (ulong) add_len);		fprintf(stdout, "%d.%d.%d.%d:%d", (a->sin_addr.s_addr >> 0) & 0xff, (a->sin_addr.s_addr >> 8) & 0xff, (a->sin_addr.s_addr >> 16) & 0xff, (a->sin_addr.s_addr >> 24) & 0xff, ntohs(a->sin_port));	} else		fprintf(stdout, "(no address)");	fprintf(stdout, "\n");	fflush(stdout);	dummy = lockf(fileno(stdout), F_ULOCK, 0);}char *addr_string(char *add_ptr, size_t add_len){	static char buf[128];	size_t len = 0;	struct sockaddr_in *a = (struct sockaddr_in *) add_ptr;	if (add_len) {		if (add_len != sizeof(*a))			len += snprintf(buf + len, sizeof(buf) - len, "Aaarrg! add_len = %lu, ", (ulong) add_len);		len += snprintf(buf + len, sizeof(buf) - len, "%d.%d.%d.%d:%d", (a->sin_addr.s_addr >> 0) & 0xff, (a->sin_addr.s_addr >> 8) & 0xff, (a->sin_addr.s_addr >> 16) & 0xff, (a->sin_addr.s_addr >> 24) & 0xff, ntohs(a->sin_port));	} else		len += snprintf(buf + len, sizeof(buf) - len, "(no address)");	/* len += snprintf(buf + len, sizeof(buf) - len, "\0"); */	return buf;}voidprint_addrs(int fd, char *add_ptr, size_t add_len){	struct sockaddr_in *sin;	if (verbose < 3)		return;	for (sin = (typeof(sin)) add_ptr; add_len >= sizeof(*sin); sin++, add_len -= sizeof(*sin)) {		char buf[128];		snprintf(buf, sizeof(buf), "%d.%d.%d.%d:%d", (sin->sin_addr.s_addr >> 0) & 0xff, (sin->sin_addr.s_addr >> 8) & 0xff, (sin->sin_addr.s_addr >> 16) & 0xff, (sin->sin_addr.s_addr >> 24) & 0xff, ntohs(sin->sin_port));		if (fd == test_fd[0]) {			fprintf(stdout, "%-20s|  |                               |                    \n", buf);		}		if (fd == test_fd[1]) {			fprintf(stdout, "                    |  |                               |     %-15s\n", buf);		}		if (fd == test_fd[2]) {			fprintf(stdout, "                    |  |                               |     %-15s\n", buf);		}	}}#endifchar *status_string(struct t_opthdr *oh){	switch (oh->status) {	case 0:		return (NULL);	case T_SUCCESS:		return ("T_SUCCESS");	case T_FAILURE:		return ("T_FAILURE");	case T_PARTSUCCESS:		return ("T_PARTSUCCESS");	case T_READONLY:		return ("T_READONLY");	case T_NOTSUPPORT:		return ("T_NOTSUPPORT");	default:	{		static char buf[32];		snprintf(buf, sizeof(buf), "(unknown status %ld)", (long) oh->status);		return buf;	}	}}#ifndef T_ALLLEVELS#define T_ALLLEVELS -1#endifchar *level_string(struct t_opthdr *oh){	switch (oh->level) {	case T_ALLLEVELS:		return ("T_ALLLEVELS");	case XTI_GENERIC:		return ("XTI_GENERIC");#if 0	case T_INET_IP:		return ("T_INET_IP");	case T_INET_UDP:		return ("T_INET_UDP");	case T_INET_TCP:		return ("T_INET_TCP");	case T_INET_SCTP:		return ("T_INET_SCTP");#endif	default:	{		static char buf[32];		snprintf(buf, sizeof(buf), "(unknown level %ld)", (long) oh->level);		return buf;	}	}}char *name_string(struct t_opthdr *oh){	if (oh->name == T_ALLOPT)		return ("T_ALLOPT");	switch (oh->level) {	case XTI_GENERIC:		switch (oh->name) {		case XTI_DEBUG:			return ("XTI_DEBUG");		case XTI_LINGER:			return ("XTI_LINGER");		case XTI_RCVBUF:			return ("XTI_RCVBUF");		case XTI_RCVLOWAT:			return ("XTI_RCVLOWAT");		case XTI_SNDBUF:			return ("XTI_SNDBUF");		case XTI_SNDLOWAT:			return ("XTI_SNDLOWAT");		}		break;#if 0	case T_INET_IP:		switch (oh->name) {		case T_IP_OPTIONS:			return ("T_IP_OPTIONS");		case T_IP_TOS:			return ("T_IP_TOS");		case T_IP_TTL:			return ("T_IP_TTL");		case T_IP_REUSEADDR:			return ("T_IP_REUSEADDR");		case T_IP_DONTROUTE:			return ("T_IP_DONTROUTE");		case T_IP_BROADCAST:			return ("T_IP_BROADCAST");		case T_IP_ADDR:			return ("T_IP_ADDR");		}		break;	case T_INET_UDP:		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;#endif	}	{		static char buf[32];		snprintf(buf, sizeof(buf), "(unknown name %ld)", (long) oh->name);		return buf;	}}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 *number_string(struct t_opthdr *oh){	static char buf[32];	snprintf(buf, 32, "%d", *((t_scalar_t *) T_OPT_DATA(oh)));	return (buf);}char *value_string(int child, struct t_opthdr *oh){#if 0	static char buf[64] = "(invalid)";#endif	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;#if 0	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", (ulong) *((t_uscalar_t *) T_OPT_DATA(oh)));			return buf;		case T_TCP_KEEPALIVE:			break;		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:			return number_string(oh);;		case T_SCTP_SID:			/* sid[child] = *((t_uscalar_t *) T_OPT_DATA(oh)); */			return number_string(oh);;		case T_SCTP_SSN:		case T_SCTP_TSN:			return number_string(oh);;		case T_SCTP_RECVOPT:			return yesno_string(oh);		case T_SCTP_COOKIE_LIFE:		case T_SCTP_SACK_DELAY:		case T_SCTP_PATH_MAX_RETRANS:		case T_SCTP_ASSOC_MAX_RETRANS:		case T_SCTP_MAX_INIT_RETRIES:		case T_SCTP_HEARTBEAT_ITVL:		case T_SCTP_RTO_INITIAL:		case T_SCTP_RTO_MIN:		case T_SCTP_RTO_MAX:		case T_SCTP_OSTREAMS:		case T_SCTP_ISTREAMS:		case T_SCTP_COOKIE_INC:		case T_SCTP_THROTTLE_ITVL:			return number_string(oh);;		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:		case T_SCTP_DISPOSITION:		case T_SCTP_MAX_BURST:		case T_SCTP_HB:		case T_SCTP_RTO:		case T_SCTP_MAXSEG:			return number_string(oh);		case T_SCTP_STATUS:			break;

⌨️ 快捷键说明

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