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

📄 test-timod.c

📁 This a separate release of the OpenSS7 X/Open XTI/TLI library, TLI modules (timod, tirdwr) and the I
💻 C
📖 第 1 页 / 共 5 页
字号:
				lockf(fileno(stdout), F_ULOCK, 0);			}			ic.ic_cmd = TI_GETADDRS;			ic.ic_len = sizeof(p->addr_ack);			p->addr_req.PRIM_type = T_ADDR_REQ;			goto do_ioctl;		case __TEST_TI_CAPABILITY:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "--ioctl(2)--------->|  |  TI_CAPABILITY                |                    [%d]\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ic.ic_cmd = TI_CAPABILITY;			ic.ic_len = sizeof(p->capability_ack);			p->capability_req.PRIM_type = T_CAPABILITY_REQ;			p->capability_req.CAP_bits1 = TC1_INFO | TC1_ACCEPTOR_ID;			goto do_ioctl;		default:			return SCRIPTERROR;		}		if (putpmsg(top_fd, ctrl, data, band, flags) < 0) {			last_errno = errno;			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "***************ERROR: putpmsg failed\n");				fprintf(stdout, "                    : %s; %s\n", __FUNCTION__, strerror(last_errno));				lockf(fileno(stdout), F_ULOCK, 0);				fflush(stdout);			}			return FAILURE;		}		return SUCCESS;	      do_ioctl:		{			int result, tpi_error;			if (verbose > 3) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "ioctl from top: cmd=%d, timout=%d, len=%d, dp=%p\n", ic.ic_cmd, ic.ic_timout, ic.ic_len, ic.ic_dp);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			result = ioctl(top_fd, I_STR, &ic);			if (verbose > 3) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "got ioctl from top: cmd=%d, timout=%d, len=%d, dp=%p\n", ic.ic_cmd, ic.ic_timout, ic.ic_len, ic.ic_dp);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			switch (result) {			case 0:				return SUCCESS;			case -1:				last_errno = errno;				if (verbose) {					lockf(fileno(stdout), F_LOCK, 0);					fprintf(stdout, "***************ERROR: ioctl failed\n");					fprintf(stdout, "                    : %s; %s\n", __FUNCTION__, strerror(last_errno));					lockf(fileno(stdout), F_ULOCK, 0);					fflush(stdout);				}				return FAILURE;			}			tpi_error = result & 0x00ff;			if (tpi_error == TSYSERR)				last_errno = (result >> 8) & 0x00ff;			else				last_errno = 0;			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "***************ERROR: ioctl failed\n");				if (verbose > 3)					fprintf(stdout, "                    : %s; result = %d\n", __FUNCTION__, result);				fprintf(stdout, "                    : %s; TPI error = %d\n", __FUNCTION__, tpi_error);				if (tpi_error == TSYSERR)					fprintf(stdout, "                    : %s; %s\n", __FUNCTION__, strerror(last_errno));				lockf(fileno(stdout), F_ULOCK, 0);				fflush(stdout);			}			return FAILURE;		}	}	if (fd == bot_fd) {		switch (action) {		case __TEST_WRITE:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-write(2)----------(%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			data->len = sprintf(dbuf, "Write test data.");			if (write(bot_fd, dbuf, data->len) < 0) {				last_errno = errno;				if (verbose) {					lockf(fileno(stdout), F_LOCK, 0);					fprintf(stdout, "                                              ****ERROR: write failed\n");					fprintf(stdout, "                                              ****ERROR: %s; %s\n", __FUNCTION__, strerror(last_errno));					fflush(stdout);					lockf(fileno(stdout), F_ULOCK, 0);				}				return FAILURE;			}			return SUCCESS;		case __TEST_WRITEV:		{			struct iovec vector[4];			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-writev(2)---------(%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			vector[0].iov_base = dbuf;			vector[0].iov_len = sprintf(vector[0].iov_base, "Writev test datum for vector 0.");			vector[1].iov_base = dbuf + vector[0].iov_len;			vector[1].iov_len = sprintf(vector[1].iov_base, "Writev test datum for vector 1.");			vector[2].iov_base = dbuf + vector[1].iov_len;			vector[2].iov_len = sprintf(vector[2].iov_base, "Writev test datum for vector 2.");			vector[3].iov_base = dbuf + vector[2].iov_len;			vector[3].iov_len = sprintf(vector[3].iov_base, "Writev test datum for vector 3.");			if (writev(bot_fd, vector, 4) < 0) {				last_errno = errno;				if (verbose) {					lockf(fileno(stdout), F_LOCK, 0);					fprintf(stdout, "                                              ****ERROR: writev failed\n");					fprintf(stdout, "                                              ****ERROR: %s; %s\n", __FUNCTION__, strerror(last_errno));					fflush(stdout);					lockf(fileno(stdout), F_ULOCK, 0);				}				return FAILURE;			}			return SUCCESS;		}		case __TEST_PUTMSG_DATA:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-putmsg(2)---------(%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl = NULL;			data->len = sprintf(dbuf, "Putmsg test data.");			flags = MSG_BAND;			band = 0;			break;		case __TEST_PUTPMSG_DATA:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-putpmsg(2)--------(%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl = NULL;			data->len = sprintf(dbuf, "Putpmsg band test data.");			flags = MSG_BAND;			band = 1;			break;		case __TEST_CONN_IND:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_CONN_IND------- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->conn_ind);			p->conn_ind.PRIM_type = T_CONN_IND;			p->conn_ind.SRC_length = 0;			p->conn_ind.SRC_offset = 0;			p->conn_ind.OPT_length = 0;			p->conn_ind.OPT_offset = 0;			p->conn_ind.SEQ_number = 0;			data->len = sprintf(dbuf, "Connection indication test data.");			flags = MSG_BAND;			band = 0;			break;		case __TEST_CONN_CON:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_CONN_CON------- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->conn_con);			p->conn_con.PRIM_type = T_CONN_CON;			p->conn_con.RES_length = 0;			p->conn_con.RES_offset = 0;			p->conn_con.OPT_length = 0;			p->conn_con.OPT_offset = 0;			data->len = sprintf(dbuf, "Connection confirmation test data.");			flags = MSG_BAND;			band = 0;			break;		case __TEST_DISCON_IND:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_DISCON_IND----- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->discon_ind);			p->discon_ind.PRIM_type = T_DISCON_IND;			p->discon_ind.DISCON_reason = 0;			p->discon_ind.SEQ_number = 0;			data->len = sprintf(dbuf, "Disconnection indication test data.");			flags = MSG_BAND;			band = 0;			break;		case __TEST_DATA_IND:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_DATA_IND------- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->data_ind);			p->data_ind.PRIM_type = T_DATA_IND;			p->data_ind.MORE_flag = 0;			data->len = sprintf(dbuf, "Normal test data.");			flags = MSG_BAND;			band = 0;			break;		case __TEST_EXDATA_IND:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_EXDATA_IND----- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->exdata_ind);			p->data_ind.PRIM_type = T_EXDATA_IND;			p->data_ind.MORE_flag = 0;			data->len = sprintf(dbuf, "Expedited test data.");			flags = MSG_BAND;			band = 1;			break;		case __TEST_INFO_ACK:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_INFO_ACK------- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->info_ack);			p->info_ack.PRIM_type = T_INFO_ACK;			p->info_ack.TSDU_size = 0;			p->info_ack.ETSDU_size = 0;			p->info_ack.CDATA_size = 0;			p->info_ack.DDATA_size = 0;			p->info_ack.ADDR_size = 0;			p->info_ack.OPT_size = 0;			p->info_ack.TIDU_size = 0;			p->info_ack.SERV_type = 0;			p->info_ack.CURRENT_state = 0;			p->info_ack.PROVIDER_flag = 0;			data = NULL;			flags = MSG_HIPRI;			band = 0;			break;		case __TEST_BIND_ACK:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_BIND_ACK------- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->bind_ack);			p->bind_ack.PRIM_type = T_BIND_ACK;			p->bind_ack.ADDR_length = 0;			p->bind_ack.ADDR_offset = 0;			p->bind_ack.CONIND_number = 0;			data = NULL;			flags = MSG_HIPRI;			band = 0;			break;		case __TEST_ERROR_ACK:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_ERROR_ACK------ (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->error_ack);			p->error_ack.PRIM_type = T_ERROR_ACK;			p->error_ack.ERROR_prim = last_prim;			p->error_ack.TLI_error = TSYSERR;			p->error_ack.UNIX_error = EPROTO;			data = NULL;			flags = MSG_HIPRI;			band = 0;			break;		case __TEST_OK_ACK:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_OK_ACK--------- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->ok_ack);			p->ok_ack.PRIM_type = T_OK_ACK;			p->ok_ack.CORRECT_prim = 0;			data = NULL;			flags = MSG_HIPRI;			band = 0;			break;		case __TEST_UNITDATA_IND:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_UNIDATA_IND---- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->unitdata_ind);			p->unitdata_ind.PRIM_type = T_UNITDATA_IND;			p->unitdata_ind.SRC_length = 0;			p->unitdata_ind.SRC_offset = 0;			p->unitdata_ind.OPT_length = 0;			p->unitdata_ind.OPT_offset = 0;			data->len = sprintf(dbuf, "Unit test data indication.");			flags = MSG_BAND;			band = 0;			break;		case __TEST_UDERROR_IND:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_UDERROR_IND---- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->uderror_ind);			p->uderror_ind.PRIM_type = T_UDERROR_IND;			p->uderror_ind.DEST_length = 0;			p->uderror_ind.DEST_offset = 0;			p->uderror_ind.OPT_length = 0;			p->uderror_ind.OPT_offset = 0;			p->uderror_ind.ERROR_type = 0;			data = NULL;			flags = MSG_BAND;			band = 0;			break;		case __TEST_OPTMGMT_ACK:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_OPTMGMT_ACK---- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->optmgmt_ack);			p->optmgmt_ack.PRIM_type = T_OPTMGMT_ACK;			data = NULL;			flags = MSG_HIPRI;			band = 0;			break;		case __TEST_ORDREL_IND:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_ORDREL_IND----- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->ordrel_ind);			p->ordrel_ind.PRIM_type = T_ORDREL_IND;			data->len = sprintf(dbuf, "Orderly release indication test data.");			flags = MSG_BAND;			band = 0;			break;		case __TEST_EXP_OPTDATA_IND:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_OPTDATA_IND---- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}			ctrl->len = sizeof(p->optdata_ind);			p->optdata_ind.PRIM_type = T_OPTDATA_IND;			p->optdata_ind.DATA_flag = T_ODF_EX;			p->optdata_ind.OPT_length = 0;			p->optdata_ind.OPT_offset = 0;			data->len = sprintf(dbuf, "Option data indication test data.");			flags = MSG_BAND;			band = 1;			break;		case __TEST_NRM_OPTDATA_IND:			if (verbose) {				lockf(fileno(stdout), F_LOCK, 0);				fprintf(stdout, "                    |  |< - - - - - - - - - - - - - - -|<-T_OPTDATA_IND---- (%d)\n", state);				fflush(stdout);				lockf(fileno(stdout), F_ULOCK, 0);			}

⌨️ 快捷键说明

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