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

📄 test-inet_raw.c

📁 7号信令功能代码,为开源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
				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_UNITDATA_REQ:					printf					    ("                    |                |<----------------|<----- T_UNITDATA_REQ\n");					break;				case T_UNITDATA_IND:					printf					    ("                    |                |---------------->|-----> T_UNITDATA_IND\n");					break;				case T_UDERROR_IND:					printf					    ("                    |                |---------------->|-----> T_UDERROR_IND \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);}voidprint_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;}voidprint_more(void){	show = 1;}intget_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);}intexpect(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);	}}intput_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("%d-ERROR: putpmsg: [%d] %s\n", fd, 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("%d-ERROR: putpmsg: [%d] %s\n", fd, errno, strerror(errno));				return (FAILURE);			}		}		if (ret == -1) {			printf("%d-ERROR: poll: [%d] %s\n", fd, errno, strerror(errno));			return (FAILURE);		}	}	while (1);}intput_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);}intinet_open(const char *name){	int fd;	if ((fd = open(name, 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;			case 5:				printf				    ("                    |                               |  v<----- OPEN         \n");				break;			}			break;		case 2:			printf("\n%d-OPEN: %s\n", fd, name);			break;		}	return (fd);}intinet_close(int fd){	int ret;	if ((ret = close(fd)) < 0)		printf("ERROR: close: [%d] %s\n", errno, strerror(errno));	else		switch (show) {		case 1:			switch (fd) {			case 3:				printf				    ("CLOSE         ----->X                               |  |                    \n");				break;			case 4:				printf				    ("                                                    X<-+------ CLOSE        \n");				break;			case 5:				printf				    ("                                                       X<----- CLOSE        \n");				break;			}			break;		case 2:			printf("\n%d-CLOSE:\n", fd);			break;		}	return (ret);}intinet_info_req(int fd){	data.len = 0;	ctrl.len = sizeof(cmd.tpi.info_req);	cmd.tpi.type = T_INFO_REQ;	return put_msg(fd, 0, MSG_HIPRI, 0);

⌨️ 快捷键说明

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