print-pptp.c
来自「TCPDUMP的C语言源代码,是在数据链路层的应用」· C语言 代码 · 共 1,061 行 · 第 1/2 页
C
1,061 行
switch (*result_code) { case 1: printf(":Connect"); break; case 2: printf(":General Error"); break; case 3: printf(":Do Not Accept"); break; default: printf(":?"); break; } break; case PPTP_CTRL_MSG_TYPE_CDN: switch (*result_code) { case 1: printf(":Lost Carrier"); break; case 2: printf(":General Error"); break; case 3: printf(":Admin Shutdown"); break; case 4: printf(":Request"); default: printf(":?"); break; break; } default: /* assertion error */ break; } } printf(")");}static voidpptp_subaddr_print(const u_char *subaddr){ printf(" SUB_ADDR(%.64s)", subaddr);}static voidpptp_vendor_print(const u_char *vendor){ printf(" VENDOR(%.64s)", vendor);}/************************************//* PPTP message print out functions *//************************************/static voidpptp_sccrq_print(const u_char *dat){ struct pptp_msg_sccrq *ptr = (struct pptp_msg_sccrq *)dat; TCHECK(ptr->proto_ver); pptp_proto_ver_print(&ptr->proto_ver); TCHECK(ptr->reserved1); TCHECK(ptr->framing_cap); pptp_framing_cap_print(&ptr->framing_cap); TCHECK(ptr->bearer_cap); pptp_bearer_cap_print(&ptr->bearer_cap); TCHECK(ptr->max_channel); pptp_max_channel_print(&ptr->max_channel); TCHECK(ptr->firm_rev); pptp_firm_rev_print(&ptr->firm_rev); TCHECK(ptr->hostname); pptp_hostname_print(&ptr->hostname[0]); TCHECK(ptr->vendor); pptp_vendor_print(&ptr->vendor[0]); return;trunc: printf("%s", tstr);}static voidpptp_sccrp_print(const u_char *dat){ struct pptp_msg_sccrp *ptr = (struct pptp_msg_sccrp *)dat; TCHECK(ptr->proto_ver); pptp_proto_ver_print(&ptr->proto_ver); TCHECK(ptr->result_code); pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_SCCRP); TCHECK(ptr->err_code); pptp_err_code_print(&ptr->err_code); TCHECK(ptr->framing_cap); pptp_framing_cap_print(&ptr->framing_cap); TCHECK(ptr->bearer_cap); pptp_bearer_cap_print(&ptr->bearer_cap); TCHECK(ptr->max_channel); pptp_max_channel_print(&ptr->max_channel); TCHECK(ptr->firm_rev); pptp_firm_rev_print(&ptr->firm_rev); TCHECK(ptr->hostname); pptp_hostname_print(&ptr->hostname[0]); TCHECK(ptr->vendor); pptp_vendor_print(&ptr->vendor[0]); return;trunc: printf("%s", tstr);}static voidpptp_stopccrq_print(const u_char *dat){ struct pptp_msg_stopccrq *ptr = (struct pptp_msg_stopccrq *)dat; TCHECK(ptr->reason); printf(" REASON(%u", ptr->reason); if (vflag) { switch (ptr->reason) { case 1: printf(":None"); break; case 2: printf(":Stop-Protocol"); break; case 3: printf(":Stop-Local-Shutdown"); break; default: printf(":?"); break; } } printf(")"); TCHECK(ptr->reserved1); TCHECK(ptr->reserved2); return;trunc: printf("%s", tstr);}static voidpptp_stopccrp_print(const u_char *dat){ struct pptp_msg_stopccrp *ptr = (struct pptp_msg_stopccrp *)dat; TCHECK(ptr->result_code); pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_StopCCRP); TCHECK(ptr->err_code); pptp_err_code_print(&ptr->err_code); TCHECK(ptr->reserved1); return;trunc: printf("%s", tstr);}static voidpptp_echorq_print(const u_char *dat){ struct pptp_msg_echorq *ptr = (struct pptp_msg_echorq *)dat; TCHECK(ptr->id); pptp_id_print(&ptr->id); return;trunc: printf("%s", tstr);}static voidpptp_echorp_print(const u_char *dat){ struct pptp_msg_echorp *ptr = (struct pptp_msg_echorp *)dat; TCHECK(ptr->id); pptp_id_print(&ptr->id); TCHECK(ptr->result_code); pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_ECHORP); TCHECK(ptr->err_code); pptp_err_code_print(&ptr->err_code); TCHECK(ptr->reserved1); return;trunc: printf("%s", tstr);}static voidpptp_ocrq_print(const u_char *dat){ struct pptp_msg_ocrq *ptr = (struct pptp_msg_ocrq *)dat; TCHECK(ptr->call_id); pptp_call_id_print(&ptr->call_id); TCHECK(ptr->call_ser); pptp_call_ser_print(&ptr->call_ser); TCHECK(ptr->min_bps); printf(" MIN_BPS(%u)", EXTRACT_32BITS(&ptr->min_bps)); TCHECK(ptr->max_bps); printf(" MAX_BPS(%u)", EXTRACT_32BITS(&ptr->max_bps)); TCHECK(ptr->bearer_type); pptp_bearer_type_print(&ptr->bearer_type); TCHECK(ptr->framing_type); pptp_framing_type_print(&ptr->framing_type); TCHECK(ptr->recv_winsiz); pptp_recv_winsiz_print(&ptr->recv_winsiz); TCHECK(ptr->pkt_proc_delay); pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay); TCHECK(ptr->phone_no_len); printf(" PHONE_NO_LEN(%u)", EXTRACT_16BITS(&ptr->phone_no_len)); TCHECK(ptr->reserved1); TCHECK(ptr->phone_no); printf(" PHONE_NO(%.64s)", ptr->phone_no); TCHECK(ptr->subaddr); pptp_subaddr_print(&ptr->subaddr[0]); return;trunc: printf("%s", tstr);}static voidpptp_ocrp_print(const u_char *dat){ struct pptp_msg_ocrp *ptr = (struct pptp_msg_ocrp *)dat; TCHECK(ptr->call_id); pptp_call_id_print(&ptr->call_id); TCHECK(ptr->peer_call_id); pptp_peer_call_id_print(&ptr->peer_call_id); TCHECK(ptr->result_code); pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_OCRP); TCHECK(ptr->err_code); pptp_err_code_print(&ptr->err_code); TCHECK(ptr->cause_code); pptp_cause_code_print(&ptr->cause_code); TCHECK(ptr->conn_speed); pptp_conn_speed_print(&ptr->conn_speed); TCHECK(ptr->recv_winsiz); pptp_recv_winsiz_print(&ptr->recv_winsiz); TCHECK(ptr->pkt_proc_delay); pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay); TCHECK(ptr->phy_chan_id); pptp_phy_chan_id_print(&ptr->phy_chan_id); return;trunc: printf("%s", tstr);}static voidpptp_icrq_print(const u_char *dat){ struct pptp_msg_icrq *ptr = (struct pptp_msg_icrq *)dat; TCHECK(ptr->call_id); pptp_call_id_print(&ptr->call_id); TCHECK(ptr->call_ser); pptp_call_ser_print(&ptr->call_ser); TCHECK(ptr->bearer_type); pptp_bearer_type_print(&ptr->bearer_type); TCHECK(ptr->phy_chan_id); pptp_phy_chan_id_print(&ptr->phy_chan_id); TCHECK(ptr->dialed_no_len); printf(" DIALED_NO_LEN(%u)", EXTRACT_16BITS(&ptr->dialed_no_len)); TCHECK(ptr->dialing_no_len); printf(" DIALING_NO_LEN(%u)", EXTRACT_16BITS(&ptr->dialing_no_len)); TCHECK(ptr->dialed_no); printf(" DIALED_NO(%.64s)", ptr->dialed_no); TCHECK(ptr->dialing_no); printf(" DIALING_NO(%.64s)", ptr->dialing_no); TCHECK(ptr->subaddr); pptp_subaddr_print(&ptr->subaddr[0]); return;trunc: printf("%s", tstr);}static voidpptp_icrp_print(const u_char *dat){ struct pptp_msg_icrp *ptr = (struct pptp_msg_icrp *)dat; TCHECK(ptr->call_id); pptp_call_id_print(&ptr->call_id); TCHECK(ptr->peer_call_id); pptp_peer_call_id_print(&ptr->peer_call_id); TCHECK(ptr->result_code); pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_ICRP); TCHECK(ptr->err_code); pptp_err_code_print(&ptr->err_code); TCHECK(ptr->recv_winsiz); pptp_recv_winsiz_print(&ptr->recv_winsiz); TCHECK(ptr->pkt_proc_delay); pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay); TCHECK(ptr->reserved1); return;trunc: printf("%s", tstr);}static voidpptp_iccn_print(const u_char *dat){ struct pptp_msg_iccn *ptr = (struct pptp_msg_iccn *)dat; TCHECK(ptr->peer_call_id); pptp_peer_call_id_print(&ptr->peer_call_id); TCHECK(ptr->reserved1); TCHECK(ptr->conn_speed); pptp_conn_speed_print(&ptr->conn_speed); TCHECK(ptr->recv_winsiz); pptp_recv_winsiz_print(&ptr->recv_winsiz); TCHECK(ptr->pkt_proc_delay); pptp_pkt_proc_delay_print(&ptr->pkt_proc_delay); TCHECK(ptr->framing_type); pptp_framing_type_print(&ptr->framing_type); return;trunc: printf("%s", tstr);}static voidpptp_ccrq_print(const u_char *dat){ struct pptp_msg_ccrq *ptr = (struct pptp_msg_ccrq *)dat; TCHECK(ptr->call_id); pptp_call_id_print(&ptr->call_id); TCHECK(ptr->reserved1); return;trunc: printf("%s", tstr);}static voidpptp_cdn_print(const u_char *dat){ struct pptp_msg_cdn *ptr = (struct pptp_msg_cdn *)dat; TCHECK(ptr->call_id); pptp_call_id_print(&ptr->call_id); TCHECK(ptr->result_code); pptp_result_code_print(&ptr->result_code, PPTP_CTRL_MSG_TYPE_CDN); TCHECK(ptr->err_code); pptp_err_code_print(&ptr->err_code); TCHECK(ptr->cause_code); pptp_cause_code_print(&ptr->cause_code); TCHECK(ptr->reserved1); TCHECK(ptr->call_stats); printf(" CALL_STATS(%.128s)", ptr->call_stats); return;trunc: printf("%s", tstr);}static voidpptp_wen_print(const u_char *dat){ struct pptp_msg_wen *ptr = (struct pptp_msg_wen *)dat; TCHECK(ptr->peer_call_id); pptp_peer_call_id_print(&ptr->peer_call_id); TCHECK(ptr->reserved1); TCHECK(ptr->crc_err); printf(" CRC_ERR(%u)", EXTRACT_32BITS(&ptr->crc_err)); TCHECK(ptr->framing_err); printf(" FRAMING_ERR(%u)", EXTRACT_32BITS(&ptr->framing_err)); TCHECK(ptr->hardware_overrun); printf(" HARDWARE_OVERRUN(%u)", EXTRACT_32BITS(&ptr->hardware_overrun)); TCHECK(ptr->buffer_overrun); printf(" BUFFER_OVERRUN(%u)", EXTRACT_32BITS(&ptr->buffer_overrun)); TCHECK(ptr->timeout_err); printf(" TIMEOUT_ERR(%u)", EXTRACT_32BITS(&ptr->timeout_err)); TCHECK(ptr->align_err); printf(" ALIGN_ERR(%u)", EXTRACT_32BITS(&ptr->align_err)); return;trunc: printf("%s", tstr);}static voidpptp_sli_print(const u_char *dat){ struct pptp_msg_sli *ptr = (struct pptp_msg_sli *)dat; TCHECK(ptr->peer_call_id); pptp_peer_call_id_print(&ptr->peer_call_id); TCHECK(ptr->reserved1); TCHECK(ptr->send_accm); printf(" SEND_ACCM(0x%08x)", EXTRACT_32BITS(&ptr->send_accm)); TCHECK(ptr->recv_accm); printf(" RECV_ACCM(0x%08x)", EXTRACT_32BITS(&ptr->recv_accm)); return;trunc: printf("%s", tstr);}voidpptp_print(const u_char *dat){ const struct pptp_hdr *hdr; u_int32_t mc; u_int16_t ctrl_msg_type; printf(": pptp"); hdr = (struct pptp_hdr *)dat; TCHECK(hdr->length); if (vflag) { printf(" Length=%u", EXTRACT_16BITS(&hdr->length)); } TCHECK(hdr->msg_type); if (vflag) { switch(EXTRACT_16BITS(&hdr->msg_type)) { case PPTP_MSG_TYPE_CTRL: printf(" CTRL-MSG"); break; case PPTP_MSG_TYPE_MGMT: printf(" MGMT-MSG"); break; default: printf(" UNKNOWN-MSG-TYPE"); break; } } TCHECK(hdr->magic_cookie); mc = EXTRACT_32BITS(&hdr->magic_cookie); if (mc != PPTP_MAGIC_COOKIE) { printf(" UNEXPECTED Magic-Cookie!!(%08x)", mc); } if (vflag || mc != PPTP_MAGIC_COOKIE) { printf(" Magic-Cookie=%08x", mc); } TCHECK(hdr->ctrl_msg_type); ctrl_msg_type = EXTRACT_16BITS(&hdr->ctrl_msg_type); if (ctrl_msg_type < PPTP_MAX_MSGTYPE_INDEX) { printf(" CTRL_MSGTYPE=%s", pptp_message_type_string[ctrl_msg_type]); } else { printf(" UNKNOWN_CTRL_MSGTYPE(%u)", ctrl_msg_type); } TCHECK(hdr->reserved0); dat += 12; switch(ctrl_msg_type) { case PPTP_CTRL_MSG_TYPE_SCCRQ: pptp_sccrq_print(dat); break; case PPTP_CTRL_MSG_TYPE_SCCRP: pptp_sccrp_print(dat); break; case PPTP_CTRL_MSG_TYPE_StopCCRQ: pptp_stopccrq_print(dat); break; case PPTP_CTRL_MSG_TYPE_StopCCRP: pptp_stopccrp_print(dat); break; case PPTP_CTRL_MSG_TYPE_ECHORQ: pptp_echorq_print(dat); break; case PPTP_CTRL_MSG_TYPE_ECHORP: pptp_echorp_print(dat); break; case PPTP_CTRL_MSG_TYPE_OCRQ: pptp_ocrq_print(dat); break; case PPTP_CTRL_MSG_TYPE_OCRP: pptp_ocrp_print(dat); break; case PPTP_CTRL_MSG_TYPE_ICRQ: pptp_icrq_print(dat); break; case PPTP_CTRL_MSG_TYPE_ICRP: pptp_icrp_print(dat); break; case PPTP_CTRL_MSG_TYPE_ICCN: pptp_iccn_print(dat); break; case PPTP_CTRL_MSG_TYPE_CCRQ: pptp_ccrq_print(dat); break; case PPTP_CTRL_MSG_TYPE_CDN: pptp_cdn_print(dat); break; case PPTP_CTRL_MSG_TYPE_WEN: pptp_wen_print(dat); break; case PPTP_CTRL_MSG_TYPE_SLI: pptp_sli_print(dat); break; default: /* do nothing */ break; } return;trunc: printf("%s", tstr);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?