📄 test-tirdwr.c
字号:
} ret = __TEST_DATA_IND; break; case T_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); } ret = __TEST_EXDATA_IND; break; case T_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); } ret = __TEST_INFO_ACK; break; case T_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); } ret = __TEST_BIND_ACK; break; case T_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); } ret = __TEST_ERROR_ACK; break; case T_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); } ret = __TEST_OK_ACK; break; case T_UNITDATA_IND: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, "<-T_UNITDATA_REQ----| | | [%d]\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_UNITDATA_IND; break; case T_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); } ret = __TEST_UDERROR_IND; break; case T_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); } ret = __TEST_OPTMGMT_ACK; break; case T_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); } ret = __TEST_ORDREL_IND; break; case T_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); } if (p->optdata_ind.DATA_flag & T_ODF_EX) ret = __TEST_EXP_OPTDATA_IND; else ret = __TEST_NRM_OPTDATA_IND; break; case T_ADDR_ACK: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, "<-T_ADDR_ACK--------| | | [%d]\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_ADDR_ACK; break; case T_CAPABILITY_ACK: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, "<-T_CPABILITY_ACK---| | | [%d]\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_CAPABILITY_ACK; break; default: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, "<-T_????_???--------| | | [%d]\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = DECODEERROR; break; } if (data && data->len >= 0) if (do_decode_data(fd, data) != __TEST_DATA) return (FAILURE); return (ret); } if (fd == bot_fd) { switch (p->type) { case T_CONN_REQ: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_CONN_REQ------> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_CONN_REQ; break; case T_CONN_RES: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_CONN_RES------> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_CONN_RES; break; case T_DISCON_REQ: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_DISCON_REQ----> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_DISCON_REQ; break; case T_DATA_REQ: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_DATA_REQ------> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_DATA_REQ; break; case T_EXDATA_REQ: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_EXDATA_REQ----> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_EXDATA_REQ; break; case T_INFO_REQ: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_INFO_REQ------> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_INFO_REQ; break; case T_BIND_REQ: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_BIND_REQ------> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_BIND_REQ; break; case T_UNBIND_REQ: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_UNBIND_REQ----> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_UNBIND_REQ; break; case T_UNITDATA_REQ: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_UNITDATA_REQ--> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_UNITDATA_REQ; break; case T_OPTMGMT_REQ: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_OPTMGMT_REQ---> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_OPTMGMT_REQ; break; case T_ORDREL_REQ: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_ORDREL_REQ----> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_ORDREL_REQ; break; case T_OPTDATA_REQ: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_OPTDATA_REQ---> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_OPTDATA_REQ; break; case T_ADDR_REQ: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_ADDR_REQ------> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_ADDR_REQ; break; case T_CAPABILITY_REQ: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_CAPABILITY_REQ> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = __TEST_CAPABILITY_REQ; break; default: if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, " | |- - - - - - - - - - - - - - - >|--T_????_???------> (%d)\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } ret = DECODEERROR; break; } if (data && data->len >= 0) if (do_decode_data(fd, data) != __TEST_DATA) return (FAILURE); return (ret); } return (DECODEERROR);}static inttop_decode_data(struct strbuf *data){ return do_decode_data(top_fd, data);}static inttop_decode_ctrl(struct strbuf *ctrl, struct strbuf *data){ return do_decode_ctrl(top_fd, ctrl, data);}static intbot_decode_data(struct strbuf *data){ return do_decode_data(bot_fd, data);}static intbot_decode_ctrl(struct strbuf *ctrl, struct strbuf *data){ return do_decode_ctrl(bot_fd, ctrl, data);}#define IUT 0x00000001UL#define PT 0x00000002UL#define ANY 0x00000003ULstatic inttop_get_data(int action){ int ret; switch (action) { case __TEST_READ: { char buf[BUFSIZE]; if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, "<-read(2)-----------| | | [%d]\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } if ((ret = read(top_fd, buf, BUFSIZE)) < 0) { last_errno = errno; if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, "***************ERROR: read failed\n"); fprintf(stdout, " : %s; %s\n", __FUNCTION__, strerror(last_errno)); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } } break; } case __TEST_READV: { char buf[BUFSIZE]; static const size_t count = 4; struct iovec vector[] = { {buf, (BUFSIZE >> 2)}, {buf + (BUFSIZE >> 2), (BUFSIZE >> 2)}, {buf + (BUFSIZE >> 2) + (BUFSIZE >> 2), (BUFSIZE >> 2)}, {buf + (BUFSIZE >> 2) + (BUFSIZE >> 2) + (BUFSIZE >> 2), (BUFSIZE >> 2)} }; if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, "<-readv(2)----------| | | [%d]\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } if ((ret = readv(top_fd, vector, count)) < 0) { last_errno = errno; if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, "***************ERROR: readv failed\n"); fprintf(stdout, " : %s; %s\n", __FUNCTION__, strerror(last_errno)); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } } break; } case __TEST_GETMSG: { char buf[BUFSIZE]; struct strbuf data = { BUFSIZE, 0, buf }; int flag = 0; if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, "<-getmsg(2)---------| | | [%d]\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } if ((ret = getmsg(top_fd, NULL, &data, &flag)) < 0) { last_errno = errno; if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, "***************ERROR: getmsg failed\n"); fprintf(stdout, " : %s; %s\n", __FUNCTION__, strerror(last_errno)); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } } else ret = data.len; break; } case __TEST_GETPMSG: { char buf[BUFSIZE]; struct strbuf data = { BUFSIZE, 0, buf }; int band = 0; int flag = 0; if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, "<-getpmsg(2)--------| | | [%d]\n", state); fflush(stdout); lockf(fileno(stdout), F_ULOCK, 0); } if ((ret = getpmsg(top_fd, NULL, &data, &band, &flag)) < 0) { last_errno = errno; if (verbose) { lockf(fileno(stdout), F_LOCK, 0); fprintf(stdout, "***************ERROR: ge
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -