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

📄 test-sctp_t.c

📁 No7信令,我需要交换类似的代码, 请店长审核,谢谢了,急着交换,谢谢
💻 C
📖 第 1 页 / 共 5 页
字号:
			printf("  DATA           = %s\n", dbuf);			break;		case T_EXDATA_REQ:			printf("  MORE_flag      = %lu\n", cmd.tpi.exdata_req.MORE_flag);			printf("  DATA           = %s\n", dbuf);			break;		case T_EXDATA_IND:			printf("  MORE_flag      = %lu\n", cmd.tpi.exdata_ind.MORE_flag);			printf("  DATA           = %s\n", dbuf);			break;		case T_OPTDATA_REQ:			printf("  DATA_flag      = ");				if ( cmd.tpi.optdata_req.DATA_flag & T_ODF_MORE ) printf("T_ODF_MORE ");				if ( cmd.tpi.optdata_req.DATA_flag & T_ODF_EX   ) printf("T_ODF_EX ");				printf("\n");			printf("  OPT            = "); print_opt (cmd.cbuf + cmd.tpi.optdata_req.OPT_offset, cmd.tpi.optdata_req.OPT_length);			printf("  DATA           = %s\n", dbuf);			break;		case T_OPTDATA_IND:			printf("  DATA_flag      = ");				if ( cmd.tpi.optdata_ind.DATA_flag & T_ODF_MORE ) printf("T_ODF_MORE ");				if ( cmd.tpi.optdata_ind.DATA_flag & T_ODF_EX   ) printf("T_ODF_EX ");				printf("\n");			printf("  OPT            = "); print_opt (cmd.cbuf + cmd.tpi.optdata_ind.OPT_offset, cmd.tpi.optdata_ind.OPT_length);			printf("  DATA           = %s\n", dbuf);			tsn[fd] = ((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->tsn_val;			sid[fd] = ((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->sid_val;			break;		case T_DISCON_REQ:			printf("  SEQ_number     = %lx\n", cmd.tpi.discon_req.SEQ_number);			break;		case T_DISCON_IND:			{			long reason = (long)cmd.tpi.discon_ind.DISCON_reason;			if ( reason >= 0 )			printf("  DISCON_reason  = %lu\n", (ulong)reason);			else			printf("  DISCON_reason  = %ld (%s)\n", reason, strerror(-reason));			printf("  SEQ_number     = %lx\n", cmd.tpi.discon_ind.SEQ_number);			break;			}		case T_ORDREL_REQ:			break;		case T_ORDREL_IND:			break;		default:			printf("Unrecognized primitive %lu!\n", cmd.tpi.type);			break;		}		break;	case 1:		if ( fd == fd1 )		{			switch ( cmd.tpi.type )			{			case T_INFO_REQ:	printf("T_INFO_REQ    ----->|                               |  |                    \n"); break;			case T_INFO_ACK:	printf("T_INFO_ACK    <-----|                               |  |                    \n"); break;			case T_OPTMGMT_REQ:	printf("T_OPTMGMT_REQ ----->|                               |  |                    \n"); break;			case T_OPTMGMT_ACK:	printf("T_OPTMGMT_ACK <-----|                               |  |                    \n"); break;			case T_BIND_REQ:	printf("T_BIND_REQ    ----->|                               |  |                    \n"); break;			case T_BIND_ACK:	printf("T_BIND_ACK    <-----|                               |  |                    \n"); break;			case T_ADDR_REQ:	printf("T_ADDR_REQ    ----->|                               |  |                    \n"); break;			case T_ADDR_ACK:	printf("T_ADDR_ACK    <-----|                               |  |                    \n"); break;			case T_UNBIND_REQ:	printf("T_UNBIND_REQ  ----->|                               |  |                    \n"); break;			case T_ERROR_ACK:	printf("T_ERROR_ACK   <----/|                               |  |                    \n");						printf("[%-11s]       |                               |  |                    \n", err_string(cmd.tpi.error_ack.TLI_error)); break;			case T_OK_ACK:		printf("T_OK_ACK      <----/|                |              |  |                    \n"); break;			case T_CONN_REQ:	printf("T_CONN_REQ    ----->|--------------->|              |  |                    \n"); break;			case T_CONN_IND:	printf("T_CONN_IND    <-----|<---------------|              |  |                    \n");						seq[fd] = cmd.tpi.conn_ind.SEQ_number; break;			case T_CONN_RES:	printf("T_CONN_RES    ----->|--------------->|              |  |                    \n"); break;			case T_CONN_CON:	printf("T_CONN_CON    <-----|<---------------|              |  |                    \n"); break;			case T_DATA_REQ:	printf("T_DATA_REQ    ----->|--------------->|                 |                    \n"); break;			case T_DATA_IND:	printf("T_DATA_IND    <-----|<---------------|                 |                    \n"); break;			case T_EXDATA_REQ:	printf("T_EXDATA_REQ  ----->|--------------->|                 |                    \n"); break;			case T_EXDATA_IND:	printf("T_EXDATA_IND  <-----|<---------------|                 |                    \n"); break;			case T_OPTDATA_REQ:	if ( cmd.tpi.optdata_req.DATA_flag & T_ODF_EX )						printf("T_OPTDATA_REQ ----->|---(%03lu:-U-)--->|                 |                    \n",								opt_data.sid_val);						else						printf("T_OPTDATA_REQ ----->|---(%03lu:---)--->|                 |                    \n",								opt_data.sid_val);						break;			case T_OPTDATA_IND:	if ( cmd.tpi.optdata_ind.DATA_flag & T_ODF_EX )						printf("T_OPTDATA_IND <-----|<--(%03lu:-U-)----|  [%010lu]   |                    \n",								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->sid_val,								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->tsn_val);						else						printf("T_OPTDATA_IND <-----|<--(%03lu:%03lu)----|  [%010lu]   |                    \n",								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->sid_val,								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->ssn_val,								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->tsn_val);						tsn[fd] = ((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->tsn_val;						sid[fd] = ((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->sid_val; break;			case T_DISCON_REQ:	printf("T_DISCON_REQ  ----->|--------------->|              |  |                    \n"); break;			case T_DISCON_IND:	printf("T_DISCON_IND  <-----|<---------------|              |  |                    \n"); break;			case T_ORDREL_REQ:	printf("T_ORDREL_REQ  ----->|--------------->|              |  |                    \n"); break;			case T_ORDREL_IND:	printf("T_ORDREL_IND  <-----|<---------------|              |  |                    \n"); break;			default:		printf("????%4ld????  ?----?|                                  |                    \n", cmd.tpi.type); break;			}		}		if ( fd == fd2 )		{			switch ( cmd.tpi.type )			{			case T_INFO_REQ:	printf("                    |                               |<-+------ T_INFO_REQ   \n"); break;			case T_INFO_ACK:	printf("                    |                               |--+-----> T_INFO_ACK   \n"); break;			case T_OPTMGMT_REQ:	printf("                    |                               |<-+------ T_OPTMGMT_REQ\n"); break;			case T_OPTMGMT_ACK:	printf("                    |                               |--+-----> T_OPTMGMT_ACK\n"); break;			case T_BIND_REQ:	printf("                    |                               |<-+------ T_BIND_REQ   \n"); break;			case T_BIND_ACK:	printf("                    |                               |--+-----> T_BIND_ACK   \n"); break;			case T_ADDR_REQ:	printf("                    |                               |<-+------ T_ADDR_REQ   \n"); break;			case T_ADDR_ACK:	printf("                    |                               |--+-----> T_ADDR_ACK   \n"); break;			case T_UNBIND_REQ:	printf("                    |                               |<-+------ T_UNBIND_REQ \n"); break;			case T_ERROR_ACK:	printf("                    |                               |\\-+-----> T_ERROR_ACK  \n");						printf("                    |                               |          [%-11s]\n", err_string(cmd.tpi.error_ack.TLI_error)); break;			case T_OK_ACK:		printf("                    |                |              |\\-+-----> T_OK_ACK     \n"); break;			case T_CONN_REQ:	printf("                    |                |<-------------|<-+------ T_CONN_REQ   \n"); break;			case T_CONN_IND:	printf("                    |                |------------->|--+-----> T_CONN_IND   \n");						seq[fd] = cmd.tpi.conn_ind.SEQ_number; break;			case T_CONN_RES:	printf("                    |                |<-------------|<-+------ T_CONN_RES   \n"); break;			case T_CONN_CON:	printf("                    |                |------------->|--+-----> T_CONN_CON   \n"); break;			case T_DATA_REQ:	printf("                    |                |<-------------|<-+------ T_DATA_REQ   \n"); break;			case T_DATA_IND:	printf("                    |                |------------->|--+-----> T_DATA_IND   \n"); break;			case T_EXDATA_REQ:	printf("                    |                |<-------------|<-+------ T_EXDATA_REQ \n"); break;			case T_EXDATA_IND:	printf("                    |                |------------->|--+-----> T_EXDATA_IND \n"); break;			case T_OPTDATA_REQ:	if ( cmd.tpi.optdata_req.DATA_flag & T_ODF_EX )						printf("                    |                |<--(%03lu:-U-)--|<-+------ T_OPTDATA_REQ\n",								opt_data.sid_val);						else						printf("                    |                |<--(%03lu:---)--|<-+------ T_OPTDATA_REQ\n",								opt_data.sid_val);						break;			case T_OPTDATA_IND:	if ( cmd.tpi.optdata_ind.DATA_flag & T_ODF_EX )						printf("                    |  [%010lu]  |---(%03lu:-U-)->|--+-----> T_OPTDATA_IND\n",								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->tsn_val,								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->sid_val);						else						printf("                    |  [%010lu]  |---(%03lu:%03lu)->|--+-----> T_OPTDATA_IND\n",								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->tsn_val,								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->sid_val,								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->ssn_val);						tsn[fd] = ((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->tsn_val;						sid[fd] = ((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->sid_val; break;			case T_DISCON_REQ:	printf("                    |                |<-------------|<-+------ T_DISCON_REQ \n"); break;			case T_DISCON_IND:	printf("                    |                |------------->|--+-----> T_DISCON_IND \n"); break;			case T_ORDREL_REQ:	printf("                    |                |<-------------|<-+------ T_ORDREL_REQ \n"); break;			case T_ORDREL_IND:	printf("                    |                |------------->|--+-----> T_ORDREL_IND \n"); break;			default:		printf("                    |                               |?-+-----? ????%4ld???? \n", cmd.tpi.type); break;			}		}		if ( fd == fd3 )		{			switch ( cmd.tpi.type )			{			case T_INFO_REQ:	printf("                    |                               |  |<----- T_INFO_REQ   \n"); break;			case T_INFO_ACK:	printf("                    |                               |  |-----> T_INFO_ACK   \n"); break;			case T_OPTMGMT_REQ:	printf("                    |                               |  |<----- T_OPTMGMT_REQ\n"); break;			case T_OPTMGMT_ACK:	printf("                    |                               |  |-----> T_OPTMGMT_ACK\n"); break;			case T_BIND_REQ:	printf("                    |                               |  |<----- T_BIND_REQ   \n"); break;			case T_BIND_ACK:	printf("                    |                               |  |-----> T_BIND_ACK   \n"); break;			case T_ADDR_REQ:	printf("                    |                               |  |<----- T_ADDR_REQ   \n"); break;			case T_ADDR_ACK:	printf("                    |                               |  |-----> T_ADDR_ACK   \n"); break;			case T_UNBIND_REQ:	printf("                    |                               |  |<----- T_UNBIND_REQ \n"); break;			case T_ERROR_ACK:	printf("                    |                               |  |\\----> T_ERROR_ACK  \n");						printf("                    |                               |  |       [%-11s]\n", err_string(cmd.tpi.error_ack.TLI_error)); break;			case T_OK_ACK:		printf("                    |                |              |  |\\----> T_OK_ACK     \n"); break;			case T_CONN_REQ:	printf("                    |                |<----------------|<----- T_CONN_REQ   \n"); break;			case T_CONN_IND:	printf("                    |                |---------------->|-----> T_CONN_IND   \n");						seq[fd] = cmd.tpi.conn_ind.SEQ_number; break;			case T_CONN_RES:	printf("                    |                |<----------------|<----- T_CONN_RES   \n"); break;			case T_CONN_CON:	printf("                    |                |---------------->|-----> T_CONN_CON   \n"); break;			case T_DATA_REQ:	printf("                    |                |<----------------|<----- T_DATA_REQ   \n"); break;			case T_DATA_IND:	printf("                    |                |---------------->|-----> T_DATA_IND   \n"); break;			case T_EXDATA_REQ:	printf("                    |                |<----------------|<----- T_EXDATA_REQ \n"); break;			case T_EXDATA_IND:	printf("                    |                |---------------->|-----> T_EXDATA_IND \n"); break;			case T_OPTDATA_REQ:	if ( cmd.tpi.optdata_req.DATA_flag & T_ODF_EX )						printf("                    |                |<---(%03lu:-U-)----|<----- T_OPTDATA_REQ\n",								opt_data.sid_val);						else						printf("                    |                |<---(%03lu:---)----|<----- T_OPTDATA_REQ\n",								opt_data.sid_val);						break;			case T_OPTDATA_IND:	if ( cmd.tpi.optdata_ind.DATA_flag & T_ODF_EX )						printf("                    |  [%010lu]  |----(%03lu:-U-)--->|-----> T_OPTDATA_IND\n",								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->tsn_val,								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->sid_val);						else						printf("                    |  [%010lu]  |----(%03lu:%03lu)--->|-----> T_OPTDATA_IND\n",								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->tsn_val,								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->sid_val,								(ulong)((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->ssn_val);						tsn[fd] = ((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->tsn_val;						sid[fd] = ((rdat_opt_t *)(cmd.cbuf+cmd.tpi.optdata_ind.OPT_offset))->sid_val; break;			case T_DISCON_REQ:	printf("                    |                |<----------------|<----- T_DISCON_REQ \n"); break;			case T_DISCON_IND:	printf("                    |                |---------------->|-----> T_DISCON_IND \n"); break;			case T_ORDREL_REQ:	printf("                    |                |<----------------|<----- T_ORDREL_REQ \n"); break;			case T_ORDREL_IND:	printf("                    |                |---------------->|-----> T_ORDREL_IND \n"); break;			default:		printf("                    |                               |  |?----? ????%4ld???? \n", cmd.tpi.type); break;			}		}		break;	}	}	FFLUSH(stdout);}void print_less(int fd){	switch ( show )	{		case 1:			switch ( fd )			{				case 0:					printf(" .         .  <---->|                .                 |<---->  .         . \n");					printf(" .  (more) .  <---->|                .                 |<---->  . (more)  . \n");					printf(" .         .  <---->|                .                 |<---->  .         . \n");					break;				case 3:					printf(" .         .  <---->|                .              |  |                    \n");					printf(" .  (more) .  <---->|                .              |  |                    \n");					printf(" .         .  <---->|                .              |  |                    \n");					break;				case 4:					printf("                    |                .              |<-+----->  .         . \n");					printf("                    |                .              |<-+----->  . (more)  . \n");					printf("                    |                .              |<-+----->  .         . \n");					break;				case 5:					printf("                    |                .              |  |<---->  .         . \n");					printf("                    |                .              |  |<---->  . (more)  . \n");					printf("                    |                .              |  |<---->  .         . \n");					break;			}			break;		case 2:			printf("%d-(more) ...\n", fd);			break;	}	show = 0;	return;}void print_more(void){	show = 1;}int get_msg(int fd, int wait){	int ret;	int flags = 0;	while ( (ret = getmsg(fd, &ctrl, &data, &flags)) < 0 ) {		switch ( errno )		{			default:			case EPROTO:			case EINVAL:				printf("ERROR: getmsg: [%d] %s\n", errno, strerror(errno));				exit(2);			case EINTR:			case ERESTART:				continue;			case EAGAIN:				break;		}		break;	}	if ( !ret )	{		gettimeofday(&when,NULL);		if ( show ) print_msg(fd);		return(cmd.tpi.type);	}	if ( !wait ) {		/* printf("Nothing to get on getmsg\n"); */		return(FAILURE);	}	do {		struct pollfd pfd[] = {			{ fd, POLLIN|POLLPRI, 0 }		};		if ( !(ret = poll(pfd, 1, wait)) ) {			/* printf("Timeout on poll for getmsg\n"); */			return(FAILURE);		}		if ( ret == 1 || ret == 2 )		{			if ( pfd[0].revents & (POLLIN|POLLPRI) ) {				flags = 0;				if ( getmsg(fd, &ctrl, &data, &flags) == 0 ) {					gettimeofday(&when,NULL);					if ( show ) print_msg(fd);					return(cmd.tpi.type);				}				printf("ERROR: getmsg: [%d] %s\n", errno, strerror(errno));				return(FAILURE);			}		}		if ( ret == -1 ) {			printf("ERROR: poll: [%d] %s\n", errno, strerror(errno));			return(FAILURE);		}	} while(1);}int expect(int fd, int wait, int want){	int got;	if ( (got = get_msg(fd, wait)) == want )		return(SUCCESS);	else {		switch ( show )		{		case 1:			switch ( fd )			{			case 3: printf("(%-12s)<-????X[Expected]                     X  X                    \n", prim_string(want)); break;			case 4: printf("                    X                     [Expected]X--X????->(%-12s)\n", prim_string(want)); break;			case 5: printf("                    X                     [Expected]X  X????->(%-12s)\n", prim_string(want)); break;			}			break;		case 2:			printf("%d-ERROR: Expected ", fd); print_prim(want);			printf(" got "); print_prim(got); printf("\n");			break;		}		return(FAILURE);	}}int put_msg(int fd, int band, int flags, int wait){	int ret;	struct strbuf *mydata = data.len ? &data : NULL;	while ( (ret = putpmsg(fd, &ctrl, mydata, band, flags)) < 0 ) {		switch ( errno ) 		{			default:				printf("ERROR: putpmsg: [%d] %s\n", errno, strerror(errno));				exit(2);				break;			case EINTR:			case ERESTART:				continue;			case EAGAIN:				break;		}		break;	}	if ( !ret )	{		gettimeofday(&when,NULL);		if ( show ) print_msg(fd);		return(SUCCESS);	}	if ( !wait ) {		/* printf("Nothing put on putpmsg\n"); */		return(FAILURE);	}	do {		int flag = band?POLLWRNORM|POLLOUT:POLLWRBAND;		struct pollfd pfd[] = {			{ fd, flag, 0 }		};		if ( !(ret = poll(pfd, 1, wait)) ) {			/* printf("Timeout on poll for putpmsg\n"); */			return(FAILURE);		}		if ( ret == 1 || ret == 2 )		{			if ( pfd[0].revents & (POLLOUT|POLLWRNORM|POLLWRBAND) ) {				if ( putpmsg(fd, &ctrl, mydata, band, flags) == 0 ) {					gettimeofday(&when,NULL);					if ( show ) print_msg(fd);					return(SUCCESS);				}				printf("ERROR: putpmsg: [%d] %s\n", errno, strerror(errno));				return(FAILURE);			}		}		if ( ret == -1 ) {			printf("ERROR: poll: [%d] %s\n", errno, strerror(errno));			return(FAILURE);		}	} while(1);}int put_fdi(int fd, int fd2, int offset, int flags){	fdi.flags  = flags;	fdi.fildes = fd2;	fdi.offset = offset;	if ( show ) print_msg(fd);	gettimeofday(&when,NULL);	if ( ioctl(fd, I_FDINSERT, &fdi) < 0 ) {		printf("ERROR: ioctl: [%d] %s\n", errno, strerror(errno));		exit(2);	}	return(SUCCESS);}int sctp_t_open(void){	int fd;	if ( (fd = open("/dev/sctp_t",O_NONBLOCK|O_RDWR)) < 0 )		printf("ERROR: open: [%d] %s\n", errno, strerror(errno));	else	switch ( show ) {		case 1:			switch ( fd )			{				case 3: printf("OPEN          ----->v                                                       \n"); break;				case 4: printf("                    |                               v<-------- OPEN         \n"); break;

⌨️ 快捷键说明

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