📄 test-timod.c
字号:
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 + -