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

📄 test-sctp_n.c

📁 OpenSS7 This the fourth public release of the OpenSS7 Master Package. See README in the release for
💻 C
📖 第 1 页 / 共 5 页
字号:
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;	size_t anum = add_len / sizeof(*a);	if (add_len > 0) {		int i;		if (add_len != anum * sizeof(*a))			len += snprintf(buf + len, sizeof(buf) - len, "Aaarrg! add_len = %lu, anum = %lu, ", (ulong) add_len, (ulong) anum);		len += snprintf(buf + len, sizeof(buf) - len, "[%d]", ntohs(a[0].sin_port));		for (i = 0; i < anum; i++) {			uint32_t addr = a[i].sin_addr.s_addr;			len += snprintf(buf + len, sizeof(buf) - len, "%s%d.%d.%d.%d", i ? "," : "", (addr >> 0) & 0xff, (addr >> 8) & 0xff, (addr >> 16) & 0xff, (addr >> 24) & 0xff);		}	} else		len += snprintf(buf + len, sizeof(buf) - len, "(no address)");	/* len += snprintf(buf + len, sizeof(buf) - len, "\0"); */	return buf;}void print_string(int child, const char *string);voidprint_addrs(int child, char *add_ptr, size_t add_len){	struct sockaddr_in *sin;	if (verbose < 3 || !show)		return;	if (add_len == 0)		print_string(child, "(no address)");	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));		print_string(child, buf);	}}#endif				/* SCTP_VERSION_2 */char *prot_string(char *pro_ptr, size_t pro_len){	static char buf[128];	size_t len = 0;	int i;	buf[0] = 0;	for (i = 0; i < pro_len; i++) {		len += snprintf(buf + len, sizeof(buf) - len, "%u ", (uint) (unsigned char) pro_ptr[i]);	}	return (buf);}void print_string(int child, const char *string);voidprint_prots(int child, char *pro_ptr, size_t pro_len){	unsigned char *prot;	if (verbose < 3 || !show)		return;	for (prot = (typeof(prot)) pro_ptr; pro_len > 0; prot++, pro_len--) {		char buf[32];		snprintf(buf, sizeof(buf), "<%u>", (unsigned int) *prot);		print_string(child, buf);	}}#if 0char *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");	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");	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;	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;	}	{		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){	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", (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:#if 1			sid[child] = *((t_uscalar_t *) T_OPT_DATA(oh));#endif			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;		case T_SCTP_DEBUG:			break;		}		break;	}	return ("(unknown value)");}#endif#if 0voidparse_options(int fd, char *opt_ptr, size_t opt_len){	struct t_opthdr *oh;	for (oh = _T_OPT_FIRSTHDR_OFS(opt_ptr, opt_len, 0); oh; oh = _T_OPT_NEXTHDR_OFS(opt_ptr, opt_len, oh, 0)) {		if (oh->len == sizeof(*oh))			continue;		switch (oh->level) {		case T_INET_SCTP:			switch (oh->name) {			case T_SCTP_PPI:				ppi[fd] = *((t_uscalar_t *) T_OPT_DATA(oh));				continue;			case T_SCTP_SID:				sid[fd] = *((t_uscalar_t *) T_OPT_DATA(oh));				continue;			case T_SCTP_SSN:				ssn[fd] = *((t_uscalar_t *) T_OPT_DATA(oh));				continue;			case T_SCTP_TSN:				tsn[fd] = *((t_uscalar_t *) T_OPT_DATA(oh));				continue;			}		}	}}#endifconst char *mgmtflag_string(np_ulong flag){	switch (flag) {	case 0:		return ("(none)");	case DEFAULT_RC_SEL:		return ("DEFAULT_RC_SEL");	default:		return ("(unknown flags)");	}}

⌨️ 快捷键说明

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