?? test-inet_tcp.c
字號:
case T_ORDREL_REQ: return ("T_ORDREL_REQ"); case T_CONN_IND: return ("T_CONN_IND"); case T_CONN_CON: return ("T_CONN_CON"); case T_DISCON_IND: return ("T_DISCON_IND"); case T_DATA_IND: return ("T_DATA_IND"); case T_EXDATA_IND: return ("T_EXDATA_IND"); case T_OPTDATA_IND: return ("T_OPTDATA_IND"); case T_INFO_ACK: return ("T_INFO_ACK"); case T_BIND_ACK: return ("T_BIND_ACK"); case T_ERROR_ACK: return ("T_ERROR_ACK"); case T_OK_ACK: return ("T_OK_ACK"); case T_UNITDATA_IND: return ("T_UNITDATA_IND"); case T_UDERROR_IND: return ("T_UDERROR_IND"); case T_OPTMGMT_ACK: return ("T_OPTMGMT_ACK"); case T_ORDREL_IND: return ("T_ORDREL_IND"); case T_ADDR_REQ: return ("T_ADDR_REQ"); case T_ADDR_ACK: return ("T_ADDR_ACK"); case FAILURE: return ("(nothing)"); default: return ("(unexpected"); }}voidprint_prim(ulong prim){ printf("%s", prim_string(prim));}voidprint_state(ulong state){ switch (state) { case TS_UNBND: printf("TS_UNBND"); break; case TS_WACK_BREQ: printf("TS_WACK_BREQ"); break; case TS_WACK_UREQ: printf("TS_WACK_UREQ"); break; case TS_IDLE: printf("TS_IDLE"); break; case TS_WACK_OPTREQ: printf("TS_WACK_OPTREQ"); break; case TS_WACK_CREQ: printf("TS_WACK_CREQ"); break; case TS_WCON_CREQ: printf("TS_WCON_CREQ"); break; case TS_WRES_CIND: printf("TS_WRES_CIND"); break; case TS_WACK_CRES: printf("TS_WACK_CRES"); break; case TS_DATA_XFER: printf("TS_DATA_XFER"); break; case TS_WIND_ORDREL: printf("TS_WIND_ORDREL"); break; case TS_WREQ_ORDREL: printf("TS_WRES_ORDREL"); break; case TS_WACK_DREQ6: printf("TS_WACK_DREQ6"); break; case TS_WACK_DREQ7: printf("TS_WACK_DREQ7"); break; case TS_WACK_DREQ9: printf("TS_WACK_DREQ9"); break; case TS_WACK_DREQ10: printf("TS_WACK_DREQ10"); break; case TS_WACK_DREQ11: printf("TS_WACK_DREQ11"); break; default: printf("(unknown [%lu])", state); break; } printf("\n");}voidprint_addr(char *add_ptr, size_t add_len){ struct sockaddr_in *a = (struct sockaddr_in *) add_ptr; if (add_len) { if (add_len != sizeof(*a)) printf("Aaarrg! add_len = %d, ", add_len); printf("%d.%d.%d.%d:%d", (a->sin_addr.s_addr >> 0) & 0xff, (a->sin_addr.s_addr >> 8) & 0xff, (a->sin_addr.s_addr >> 16) & 0xff, (a->sin_addr.s_addr >> 24) & 0xff, ntohs(a->sin_port)); } else printf("(no address)"); printf("\n");}voidprint_opt(char *opt_ptr, size_t opt_len){ struct t_opthdr *oh = (struct t_opthdr *) opt_ptr; size_t opt_rem = opt_len; if (opt_len) { while (opt_rem && opt_rem > sizeof(*oh) && oh->len <= opt_rem) { char result[128] = "(failure)"; long val = *((t_scalar_t *) (oh + 1)); printf("\n\t"); switch (oh->level) { case T_INET_IP: switch (oh->name) { case T_IP_OPTIONS: printf("T_IP_OPTIONS = "); sprintf(result, "%s", "(not impl)"); break; case T_IP_TOS: printf("T_IP_TOS = "); sprintf(result, "0x%lx", val); break; case T_IP_TTL: printf("T_IP_TTL = "); sprintf(result, "%ld", val); break; case T_IP_REUSEADDR: printf("T_IP_REUSEADDR = "); sprintf(result, "%s", val == T_YES ? "T_YES" : "T_NO"); break; case T_IP_DONTROUTE: printf("T_IP_DONTROUTE = "); sprintf(result, "%s", val == T_YES ? "T_YES" : "T_NO"); break; case T_IP_BROADCAST: printf("T_IP_BROADCAST = "); sprintf(result, "%s", val == T_YES ? "T_YES" : "T_NO"); break; default: printf("(bad option name %lu)", oh->name); break; } break; case T_INET_TCP: switch (oh->name) { case T_TCP_NODELAY: printf("T_TCP_NODELAY = "); sprintf(result, "%s", val == T_YES ? "T_YES" : "T_NO"); break; case T_TCP_MAXSEG: printf("T_TCP_MAXSEG = "); sprintf(result, "%ld", val); break; case T_TCP_KEEPALIVE: printf("T_TCP_KEEPALIVE = "); sprintf(result, "%s", val == T_YES ? "T_YES" : "T_NO"); break; default: printf("(bad option name %lu)", oh->name); break; } break; case T_INET_UDP: switch (oh->name) { case T_UDP_CHECKSUM: printf("T_UDP_CHECKSUM = "); sprintf(result, "%s", val == T_YES ? "T_YES" : "T_NO"); break; default: printf("(bad option name %lu)", oh->name); break; } break; case T_INET_SCTP: switch (oh->name) { case T_SCTP_NODELAY: printf("T_SCTP_NODELAY = "); sprintf(result, "%s", val == T_YES ? "T_YES" : "T_NO"); break; case T_SCTP_CORK: printf("T_SCTP_CORK = "); sprintf(result, "%s", val == T_YES ? "T_YES" : "T_NO"); break; case T_SCTP_PPI: printf("T_SCTP_PPI = "); sprintf(result, "%ld", val); break; case T_SCTP_SID: printf("T_SCTP_SID = "); sprintf(result, "%ld", val); break; case T_SCTP_SSN: printf("T_SCTP_SSN = "); sprintf(result, "%ld", val); break; case T_SCTP_TSN: printf("T_SCTP_TSN = "); sprintf(result, "%lu", (ulong) val); break; case T_SCTP_RECVOPT: printf("T_SCTP_RECVOPT = "); sprintf(result, "%s", val == T_YES ? "T_YES" : "T_NO"); break; case T_SCTP_COOKIE_LIFE: printf("T_SCTP_COOKIE_LIFE = "); sprintf(result, "%ld", val); break; case T_SCTP_SACK_DELAY: printf("T_SCTP_SACK_DELAY = "); sprintf(result, "%ld", val); break; case T_SCTP_PATH_MAX_RETRANS: printf("T_SCTP_PATH_MAX_RETRANS = "); sprintf(result, "%ld", val); break; case T_SCTP_ASSOC_MAX_RETRANS: printf("T_SCTP_ASSOC_MAX_RETRANS = "); sprintf(result, "%ld", val); break; case T_SCTP_MAX_INIT_RETRIES: printf("T_SCTP_MAX_INIT_RETRIES = "); sprintf(result, "%ld", val); break; case T_SCTP_HEARTBEAT_ITVL: printf("T_SCTP_HEARTBEAT_ITVL = "); sprintf(result, "%ld", val); break; case T_SCTP_RTO_INITIAL: printf("T_SCTP_RTO_INITIAL = "); sprintf(result, "%ld", val); break; case T_SCTP_RTO_MIN: printf("T_SCTP_RTO_MIN = "); sprintf(result, "%ld", val); break; case T_SCTP_RTO_MAX: printf("T_SCTP_RTO_MAX = "); sprintf(result, "%ld", val); break; case T_SCTP_OSTREAMS: printf("T_SCTP_OSTREAMS = "); sprintf(result, "%ld", val); break; case T_SCTP_ISTREAMS: printf("T_SCTP_ISTREAMS = "); sprintf(result, "%ld", val); break; case T_SCTP_COOKIE_INC: printf("T_SCTP_COOKIE_INC = "); sprintf(result, "%ld", val); break; case T_SCTP_THROTTLE_ITVL: printf("T_SCTP_THROTTLE_ITVL = "); sprintf(result, "%ld", val); break; case T_SCTP_MAC_TYPE: printf("T_SCTP_MAC_TYPE = "); switch (val) { default: case SCTP_HMAC_NONE: sprintf(result, "NONE"); break; case SCTP_HMAC_SHA_1: sprintf(result, "SHA_1"); break; case SCTP_HMAC_MD5: sprintf(result, "MD5"); break; } break; case T_SCTP_HB: printf("T_SCTP_HB = "); sprintf(result, "%s", "(undone)"); break; case T_SCTP_RTO: printf("T_SCTP_RTO = "); sprintf(result, "%s", "(undone)"); break; case T_SCTP_MAXSEG: printf("T_SCTP_MAXSEG = "); sprintf(result, "%ld", val); break; case T_SCTP_STATUS: printf("T_SCTP_STATUS = "); sprintf(result, "%s", "(undone)"); break; case T_SCTP_DEBUG: printf("T_SCTP_DEBUG = "); if (!val) sprintf(result, "(none)"); else { char *where = result; if (val & SCTP_OPTION_DROPPING) where += sprintf(where, " DROPPING"); if (val & SCTP_OPTION_BREAK) where += sprintf(where, " BREAK"); if (val & SCTP_OPTION_DBREAK) where += sprintf(where, " DBREAK"); if (val & SCTP_OPTION_RANDOM) where += sprintf(where, " RANDOM"); } break; default: printf("(bad option name %lu)", oh->name); break; } break; default: printf("(bad option level %lu)", oh->level); break; } printf("%s", result); opt_rem -= oh->len; oh = (struct t_opthdr *) (((char *) oh) + oh->len); } if (opt_rem) printf("\n\tBadly formatted options."); } else printf("(no opt)"); printf("\n");}voidprint_size(ulong size){ switch (size) { case -1UL: printf("T_INFINITE\n"); break; case -2UL: printf("T_INVALID\n"); break; default: printf("%lu\n", size); break; }}voidprint_msg(int fd){ if (ctrl.len > 0) { switch (show) { case 0: return; case 2: printf("%d-", fd); print_prim(cmd.tpi.type); printf(":\n"); switch (cmd.tpi.type) { case T_INFO_REQ: break; case T_INFO_ACK: printf(" TSDU_size = "); print_size(cmd.tpi.info_ack.TSDU_size); printf(" ETSDU_size = "); print_size(cmd.tpi.info_ack.ETSDU_size); printf(" CDATA_size = "); print_size(cmd.tpi.info_ack.CDATA_size); printf(" DDATA_size = "); print_size(cmd.tpi.info_ack.DDATA_size); printf(" ADDR_size = "); print_size(cmd.tpi.info_ack.ADDR_size); printf(" OPT_size = "); print_size(cmd.tpi.info_ack.OPT_size); printf(" TIDU_size = "); print_size(cmd.tpi.info_ack.TIDU_size); printf(" SERV_type = "); switch (cmd.tpi.info_ack.SERV_type) { case T_COTS: printf("T_COTS\n"); break; case T_COTS_ORD: printf("T_COTS_ORD\n"); break; case T_CLTS: printf("T_CLTS\n"); break; default: printf("(unknown)\n"); break; } printf(" CURRENT_state = "); print_state(cmd.tpi.info_ack.CURRENT_state); printf(" PROVIDER_flag = "); if (cmd.tpi.info_ack.PROVIDER_flag & T_SNDZERO) printf("T_SNDZERO\n"); if (cmd.tpi.info_ack.PROVIDER_flag & XPG4_1) printf(" XPG4_1\n"); break; case T_OPTMGMT_REQ: printf(" MGMT_flags = "); switch (cmd.tpi.optmgmt_req.MGMT_flags) { case T_NEGOTIATE: printf("T_NEGOTIATE\n"); break; case T_CHECK: printf("T_CHECK\n"); break; case T_CURRENT: printf("T_CURRENT\n"); break; case T_DEFAULT: printf("T_DEFAULT\n"); break; default: break; } printf(" OPT = "); print_opt(cmd.cbuf + cmd.tpi.optmgmt_req.OPT_offset, cmd.tpi.optmgmt_req.OPT_length); break; case T_OPTMGMT_ACK: printf(" MGMT_flags = "); switch (cmd.tpi.optmgmt_ack.MGMT_flags) { case T_NEGOTIATE: printf("T_NEGOTIATE\n"); break; case T_CHECK: printf("T_CHECK\n"); break; case T_CURRENT: printf("T_CURRENT\n"); break; case T_DEFAULT: printf("T_DEFAULT\n"); break; default: break; } printf(" OPT = "); print_opt(cmd.cbuf + cmd.tpi.optmgmt_ack.OPT_offset, cmd.tpi.optmgmt_ack.OPT_length); break; case T_BIND_REQ: printf(" ADDR = "); print_addr(cmd.cbuf + cmd.tpi.bind_req.ADDR_offset, cmd.tpi.bind_req.ADDR_length); printf(" CONIND_number = %lu\n", cmd.tpi.bind_req.CONIND_number); break; case T_BIND_ACK:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -