📄 test-inet_udp.c
字号:
switch (oh->name) { case T_UDP_CHECKSUM: return ("T_UDP_CHECKSUM"); } break; case T_INET_TCP: switch (oh->name) { case T_TCP_NODELAY: return ("T_TCP_NODELAY"); case T_TCP_MAXSEG: return ("T_TCP_MAXSEG"); case T_TCP_KEEPALIVE: return ("T_TCP_KEEPALIVE"); case T_TCP_CORK: return ("T_TCP_CORK"); case T_TCP_KEEPIDLE: return ("T_TCP_KEEPIDLE"); case T_TCP_KEEPINTVL: return ("T_TCP_KEEPINTVL"); case T_TCP_KEEPCNT: return ("T_TCP_KEEPCNT"); case T_TCP_SYNCNT: return ("T_TCP_SYNCNT"); case T_TCP_LINGER2: return ("T_TCP_LINGER2"); case T_TCP_DEFER_ACCEPT: return ("T_TCP_DEFER_ACCEPT"); case T_TCP_WINDOW_CLAMP: return ("T_TCP_WINDOW_CLAMP"); case T_TCP_INFO: return ("T_TCP_INFO"); case T_TCP_QUICKACK: return ("T_TCP_QUICKACK"); } break; case T_INET_SCTP: switch (oh->name) { case T_SCTP_NODELAY: return ("T_SCTP_NODELAY"); case T_SCTP_CORK: return ("T_SCTP_CORK"); case T_SCTP_PPI: return ("T_SCTP_PPI"); case T_SCTP_SID: return ("T_SCTP_SID"); case T_SCTP_SSN: return ("T_SCTP_SSN"); case T_SCTP_TSN: return ("T_SCTP_TSN"); case T_SCTP_RECVOPT: return ("T_SCTP_RECVOPT"); case T_SCTP_COOKIE_LIFE: return ("T_SCTP_COOKIE_LIFE"); case T_SCTP_SACK_DELAY: return ("T_SCTP_SACK_DELAY"); case T_SCTP_PATH_MAX_RETRANS: return ("T_SCTP_PATH_MAX_RETRANS"); case T_SCTP_ASSOC_MAX_RETRANS: return ("T_SCTP_ASSOC_MAX_RETRANS"); case T_SCTP_MAX_INIT_RETRIES: return ("T_SCTP_MAX_INIT_RETRIES"); case T_SCTP_HEARTBEAT_ITVL: return ("T_SCTP_HEARTBEAT_ITVL"); case T_SCTP_RTO_INITIAL: return ("T_SCTP_RTO_INITIAL"); case T_SCTP_RTO_MIN: return ("T_SCTP_RTO_MIN"); case T_SCTP_RTO_MAX: return ("T_SCTP_RTO_MAX"); case T_SCTP_OSTREAMS: return ("T_SCTP_OSTREAMS"); case T_SCTP_ISTREAMS: return ("T_SCTP_ISTREAMS"); case T_SCTP_COOKIE_INC: return ("T_SCTP_COOKIE_INC"); case T_SCTP_THROTTLE_ITVL: return ("T_SCTP_THROTTLE_ITVL"); case T_SCTP_MAC_TYPE: return ("T_SCTP_MAC_TYPE"); case T_SCTP_CKSUM_TYPE: return ("T_SCTP_CKSUM_TYPE"); case T_SCTP_ECN: return ("T_SCTP_ECN"); case T_SCTP_ALI: return ("T_SCTP_ALI"); case T_SCTP_ADD: return ("T_SCTP_ADD"); case T_SCTP_SET: return ("T_SCTP_SET"); case T_SCTP_ADD_IP: return ("T_SCTP_ADD_IP"); case T_SCTP_DEL_IP: return ("T_SCTP_DEL_IP"); case T_SCTP_SET_IP: return ("T_SCTP_SET_IP"); case T_SCTP_PR: return ("T_SCTP_PR"); case T_SCTP_LIFETIME: return ("T_SCTP_LIFETIME"); case T_SCTP_DISPOSITION: return ("T_SCTP_DISPOSITION"); case T_SCTP_MAX_BURST: return ("T_SCTP_MAX_BURST"); case T_SCTP_HB: return ("T_SCTP_HB"); case T_SCTP_RTO: return ("T_SCTP_RTO"); case T_SCTP_MAXSEG: return ("T_SCTP_MAXSEG"); case T_SCTP_STATUS: return ("T_SCTP_STATUS"); case T_SCTP_DEBUG: return ("T_SCTP_DEBUG"); } break; } return ("(unknown name)");}char *yesno_string(struct t_opthdr *oh){ switch (*((t_uscalar_t *) T_OPT_DATA(oh))) { case T_YES: return ("T_YES"); case T_NO: return ("T_NO"); default: return ("(invalid)"); }}char *value_string(struct t_opthdr *oh){ static char buf[64] = "(invalid)"; if (oh->len == sizeof(*oh)) return (NULL); switch (oh->level) { case XTI_GENERIC: switch (oh->name) { case XTI_DEBUG: break; case XTI_LINGER: break; case XTI_RCVBUF: break; case XTI_RCVLOWAT: break; case XTI_SNDBUF: break; case XTI_SNDLOWAT: break; } break; case T_INET_IP: switch (oh->name) { case T_IP_OPTIONS: break; case T_IP_TOS: if (oh->len = sizeof(*oh) + sizeof(unsigned char)) snprintf(buf, sizeof(buf), "0x%02x", *((unsigned char *) T_OPT_DATA(oh))); return buf; case T_IP_TTL: if (oh->len = sizeof(*oh) + sizeof(unsigned char)) snprintf(buf, sizeof(buf), "0x%02x", *((unsigned char *) T_OPT_DATA(oh))); return buf; case T_IP_REUSEADDR: return yesno_string(oh); case T_IP_DONTROUTE: return yesno_string(oh); case T_IP_BROADCAST: return yesno_string(oh); case T_IP_ADDR: if (oh->len == sizeof(*oh) + sizeof(uint32_t)) { uint32_t addr = *((uint32_t *) T_OPT_DATA(oh)); snprintf(buf, sizeof(buf), "%d.%d.%d.%d", (addr >> 0) & 0x00ff, (addr >> 8) & 0x00ff, (addr >> 16) & 0x00ff, (addr >> 24) & 0x00ff); } return buf; } break; case T_INET_UDP: switch (oh->name) { case T_UDP_CHECKSUM: return yesno_string(oh); } break; case T_INET_TCP: switch (oh->name) { case T_TCP_NODELAY: return yesno_string(oh); case T_TCP_MAXSEG: if (oh->len == sizeof(*oh) + sizeof(t_uscalar_t)) snprintf(buf, sizeof(buf), "%lu", *((t_uscalar_t *) T_OPT_DATA(oh))); return buf; case T_TCP_KEEPALIVE: return yesno_string(oh); case T_TCP_CORK: return yesno_string(oh); case T_TCP_KEEPIDLE: break; case T_TCP_KEEPINTVL: break; case T_TCP_KEEPCNT: break; case T_TCP_SYNCNT: break; case T_TCP_LINGER2: break; case T_TCP_DEFER_ACCEPT: break; case T_TCP_WINDOW_CLAMP: break; case T_TCP_INFO: break; case T_TCP_QUICKACK: break; } break; case T_INET_SCTP: switch (oh->name) { case T_SCTP_NODELAY: return yesno_string(oh); case T_SCTP_CORK: return yesno_string(oh); case T_SCTP_PPI: break; case T_SCTP_SID: break; case T_SCTP_SSN: break; case T_SCTP_TSN: break; case T_SCTP_RECVOPT: return yesno_string(oh); case T_SCTP_COOKIE_LIFE: break; case T_SCTP_SACK_DELAY: break; case T_SCTP_PATH_MAX_RETRANS: break; case T_SCTP_ASSOC_MAX_RETRANS: break; case T_SCTP_MAX_INIT_RETRIES: break; case T_SCTP_HEARTBEAT_ITVL: break; case T_SCTP_RTO_INITIAL: break; case T_SCTP_RTO_MIN: break; case T_SCTP_RTO_MAX: break; case T_SCTP_OSTREAMS: break; case T_SCTP_ISTREAMS: break; case T_SCTP_COOKIE_INC: break; case T_SCTP_THROTTLE_ITVL: break; case T_SCTP_MAC_TYPE: break; case T_SCTP_CKSUM_TYPE: break; case T_SCTP_ECN: break; case T_SCTP_ALI: break; case T_SCTP_ADD: break; case T_SCTP_SET: break; case T_SCTP_ADD_IP: break; case T_SCTP_DEL_IP: break; case T_SCTP_SET_IP: break; case T_SCTP_PR: break; case T_SCTP_LIFETIME: break; case T_SCTP_DISPOSITION: break; case T_SCTP_MAX_BURST: break; case T_SCTP_HB: break; case T_SCTP_RTO: break; case T_SCTP_MAXSEG: break; case T_SCTP_STATUS: break; case T_SCTP_DEBUG: break; } break; } return ("(unknown value)");}voidprint_options(int fd, char *opt_ptr, size_t opt_len){ struct t_opthdr *oh; if (verbose < 4) return; for (oh = _T_OPT_FIRSTHDR_OFS(opt_ptr, opt_len, 0); oh; oh = _T_OPT_NEXTHDR_OFS(opt_ptr, opt_len, oh, 0)) { char *level = level_string(oh); char *name = name_string(oh); char *status = status_string(oh); char *value = value_string(oh); int len = oh->len - sizeof(*oh); unsigned char *val = _T_OPT_DATA_OFS(oh, 0); if (len < 0) break; if (fd == conn_fd) {#if 0 fprintf(stdout, "%-20s| | | \n", level);#endif fprintf(stdout, "%-20s| | | \n", name); if (status) fprintf(stdout, "%-20s| | | \n", status); if (value) fprintf(stdout, "%-20s| | | \n", value);#if 0 fprintf(stdout, "len = %03d | | | \n", len);#endif } if (fd == resp_fd) {#if 0 fprintf(stdout, " | | | %-15s\n", level);#endif fprintf(stdout, " | | | %-15s\n", name); if (status) fprintf(stdout, " | | | %-15s\n", status); if (value) fprintf(stdout, " | | | %-15s\n", value);#if 0 fprintf(stdout, " | | | len = %03d \n", len);#endif } if (fd == list_fd) {#if 0 fprintf(stdout, " | | | %-15s\n", level);#endif fprintf(stdout, " | | | %-15s\n", name); if (status) fprintf(stdout, " | | | %-15s\n", status); if (value) fprintf(stdout, " | | | %-15s\n", value);#if 0 fprintf(stdout, " | | | len = %03d \n", len);#endif } }}char *mgmtflag_string(t_uscalar_t flag){ switch (flag) { case T_NEGOTIATE: return ("T_NEGOTIATE"); case T_CHECK: return ("T_CHECK"); case T_DEFAULT: return ("T_DEFAULT"); case T_SUCCESS: return ("T_SUCCESS"); case T_FAILURE: return ("T_FAILURE"); case T_CURRENT: return ("T_CURRENT"); case T_PARTSUCCESS: return ("T_PARTSUCCESS"); case T_READONLY: return ("T_READONLY"); case T_NOTSUPPORT: return ("T_NOTSUPPORT"); } return "(unknown flag)";}voidprint_mgmtflag(int fd, t_uscalar_t flag){ if (verbose < 2) return; if (fd == conn_fd) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -