X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/7089a78f2ce77dc0258fe70ea60e777e3d4ed9b7..HEAD:/print-pptp.c diff --git a/print-pptp.c b/print-pptp.c index 08b5ae92..8666e505 100644 --- a/print-pptp.c +++ b/print-pptp.c @@ -25,9 +25,7 @@ /* specification: RFC 2637 */ -#ifdef HAVE_CONFIG_H #include -#endif #include "netdissect-stdinc.h" @@ -55,7 +53,7 @@ #define PPTP_CTRL_MSG_TYPE_WEN 14 #define PPTP_CTRL_MSG_TYPE_SLI 15 -#define PPTP_FRAMING_CAP_ASYNC_MASK 0x00000001 /* Aynchronous */ +#define PPTP_FRAMING_CAP_ASYNC_MASK 0x00000001 /* Asynchronous */ #define PPTP_FRAMING_CAP_SYNC_MASK 0x00000002 /* Synchronous */ #define PPTP_BEARER_CAP_ANALOG_MASK 0x00000001 /* Analog */ @@ -276,10 +274,6 @@ struct pptp_msg_sli { /* Attribute-specific print out functions */ /******************************************/ -/* In these attribute-specific print-out functions, it't not necessary - to do ND_TCHECK because they are already checked in the caller of - these functions. */ - static void pptp_bearer_cap_print(netdissect_options *ndo, const nd_uint32_t bearer_cap) @@ -395,7 +389,9 @@ static void pptp_hostname_print(netdissect_options *ndo, const u_char *hostname) { - ND_PRINT(" HOSTNAME(%.64s)", hostname); + ND_PRINT(" HOSTNAME("); + nd_printjnp(ndo, hostname, 64); + ND_PRINT(")"); } static void @@ -515,14 +511,18 @@ static void pptp_subaddr_print(netdissect_options *ndo, const u_char *subaddr) { - ND_PRINT(" SUB_ADDR(%.64s)", subaddr); + ND_PRINT(" SUB_ADDR("); + nd_printjnp(ndo, subaddr, 64); + ND_PRINT(")"); } static void pptp_vendor_print(netdissect_options *ndo, const u_char *vendor) { - ND_PRINT(" VENDOR(%.64s)", vendor); + ND_PRINT(" VENDOR("); + nd_printjnp(ndo, vendor, 64); + ND_PRINT(")"); } /************************************/ @@ -534,27 +534,14 @@ pptp_sccrq_print(netdissect_options *ndo, { const struct pptp_msg_sccrq *ptr = (const struct pptp_msg_sccrq *)dat; - ND_TCHECK_2(ptr->proto_ver); pptp_proto_ver_print(ndo, ptr->proto_ver); - ND_TCHECK_2(ptr->reserved1); PRINT_RESERVED_IF_NOT_ZERO_2(ptr->reserved1); - ND_TCHECK_4(ptr->framing_cap); pptp_framing_cap_print(ndo, ptr->framing_cap); - ND_TCHECK_4(ptr->bearer_cap); pptp_bearer_cap_print(ndo, ptr->bearer_cap); - ND_TCHECK_2(ptr->max_channel); pptp_max_channel_print(ndo, ptr->max_channel); - ND_TCHECK_2(ptr->firm_rev); pptp_firm_rev_print(ndo, ptr->firm_rev); - ND_TCHECK_SIZE(&ptr->hostname); - pptp_hostname_print(ndo, &ptr->hostname[0]); - ND_TCHECK_SIZE(&ptr->vendor); - pptp_vendor_print(ndo, &ptr->vendor[0]); - - return; - -trunc: - nd_print_trunc(ndo); + pptp_hostname_print(ndo, ptr->hostname); + pptp_vendor_print(ndo, ptr->vendor); } static void @@ -563,29 +550,15 @@ pptp_sccrp_print(netdissect_options *ndo, { const struct pptp_msg_sccrp *ptr = (const struct pptp_msg_sccrp *)dat; - ND_TCHECK_2(ptr->proto_ver); pptp_proto_ver_print(ndo, ptr->proto_ver); - ND_TCHECK_1(ptr->result_code); pptp_result_code_print(ndo, ptr->result_code, PPTP_CTRL_MSG_TYPE_SCCRP); - ND_TCHECK_1(ptr->err_code); pptp_err_code_print(ndo, ptr->err_code); - ND_TCHECK_4(ptr->framing_cap); pptp_framing_cap_print(ndo, ptr->framing_cap); - ND_TCHECK_4(ptr->bearer_cap); pptp_bearer_cap_print(ndo, ptr->bearer_cap); - ND_TCHECK_2(ptr->max_channel); pptp_max_channel_print(ndo, ptr->max_channel); - ND_TCHECK_2(ptr->firm_rev); pptp_firm_rev_print(ndo, ptr->firm_rev); - ND_TCHECK_SIZE(&ptr->hostname); - pptp_hostname_print(ndo, &ptr->hostname[0]); - ND_TCHECK_SIZE(&ptr->vendor); - pptp_vendor_print(ndo, &ptr->vendor[0]); - - return; - -trunc: - nd_print_trunc(ndo); + pptp_hostname_print(ndo, ptr->hostname); + pptp_vendor_print(ndo, ptr->vendor); } static void @@ -612,15 +585,8 @@ pptp_stopccrq_print(netdissect_options *ndo, } } ND_PRINT(")"); - ND_TCHECK_1(ptr->reserved1); PRINT_RESERVED_IF_NOT_ZERO_1(ptr->reserved1); - ND_TCHECK_2(ptr->reserved2); PRINT_RESERVED_IF_NOT_ZERO_2(ptr->reserved2); - - return; - -trunc: - nd_print_trunc(ndo); } static void @@ -629,17 +595,9 @@ pptp_stopccrp_print(netdissect_options *ndo, { const struct pptp_msg_stopccrp *ptr = (const struct pptp_msg_stopccrp *)dat; - ND_TCHECK_1(ptr->result_code); pptp_result_code_print(ndo, ptr->result_code, PPTP_CTRL_MSG_TYPE_StopCCRP); - ND_TCHECK_1(ptr->err_code); pptp_err_code_print(ndo, ptr->err_code); - ND_TCHECK_2(ptr->reserved1); PRINT_RESERVED_IF_NOT_ZERO_2(ptr->reserved1); - - return; - -trunc: - nd_print_trunc(ndo); } static void @@ -648,13 +606,7 @@ pptp_echorq_print(netdissect_options *ndo, { const struct pptp_msg_echorq *ptr = (const struct pptp_msg_echorq *)dat; - ND_TCHECK_4(ptr->id); pptp_id_print(ndo, ptr->id); - - return; - -trunc: - nd_print_trunc(ndo); } static void @@ -663,19 +615,10 @@ pptp_echorp_print(netdissect_options *ndo, { const struct pptp_msg_echorp *ptr = (const struct pptp_msg_echorp *)dat; - ND_TCHECK_4(ptr->id); pptp_id_print(ndo, ptr->id); - ND_TCHECK_1(ptr->result_code); pptp_result_code_print(ndo, ptr->result_code, PPTP_CTRL_MSG_TYPE_ECHORP); - ND_TCHECK_1(ptr->err_code); pptp_err_code_print(ndo, ptr->err_code); - ND_TCHECK_2(ptr->reserved1); PRINT_RESERVED_IF_NOT_ZERO_2(ptr->reserved1); - - return; - -trunc: - nd_print_trunc(ndo); } static void @@ -684,32 +627,21 @@ pptp_ocrq_print(netdissect_options *ndo, { const struct pptp_msg_ocrq *ptr = (const struct pptp_msg_ocrq *)dat; - ND_TCHECK_2(ptr->call_id); pptp_call_id_print(ndo, ptr->call_id); - ND_TCHECK_2(ptr->call_ser); pptp_call_ser_print(ndo, ptr->call_ser); ND_PRINT(" MIN_BPS(%u)", GET_BE_U_4(ptr->min_bps)); ND_PRINT(" MAX_BPS(%u)", GET_BE_U_4(ptr->max_bps)); - ND_TCHECK_4(ptr->bearer_type); pptp_bearer_type_print(ndo, ptr->bearer_type); - ND_TCHECK_4(ptr->framing_type); pptp_framing_type_print(ndo, ptr->framing_type); - ND_TCHECK_2(ptr->recv_winsiz); pptp_recv_winsiz_print(ndo, ptr->recv_winsiz); - ND_TCHECK_2(ptr->pkt_proc_delay); pptp_pkt_proc_delay_print(ndo, ptr->pkt_proc_delay); ND_PRINT(" PHONE_NO_LEN(%u)", GET_BE_U_2(ptr->phone_no_len)); - ND_TCHECK_2(ptr->reserved1); PRINT_RESERVED_IF_NOT_ZERO_2(ptr->reserved1); - ND_TCHECK_SIZE(&ptr->phone_no); - ND_PRINT(" PHONE_NO(%.64s)", ptr->phone_no); - ND_TCHECK_SIZE(&ptr->subaddr); - pptp_subaddr_print(ndo, &ptr->subaddr[0]); - - return; - -trunc: - nd_print_trunc(ndo); + ND_PRINT(" PHONE_NO("); + nd_printjnp(ndo, ptr->phone_no, + ND_MIN(64, GET_BE_U_2(ptr->phone_no_len))); + ND_PRINT(")"); + pptp_subaddr_print(ndo, ptr->subaddr); } static void @@ -718,29 +650,15 @@ pptp_ocrp_print(netdissect_options *ndo, { const struct pptp_msg_ocrp *ptr = (const struct pptp_msg_ocrp *)dat; - ND_TCHECK_2(ptr->call_id); pptp_call_id_print(ndo, ptr->call_id); - ND_TCHECK_2(ptr->peer_call_id); pptp_peer_call_id_print(ndo, ptr->peer_call_id); - ND_TCHECK_1(ptr->result_code); pptp_result_code_print(ndo, ptr->result_code, PPTP_CTRL_MSG_TYPE_OCRP); - ND_TCHECK_1(ptr->err_code); pptp_err_code_print(ndo, ptr->err_code); - ND_TCHECK_2(ptr->cause_code); pptp_cause_code_print(ndo, ptr->cause_code); - ND_TCHECK_4(ptr->conn_speed); pptp_conn_speed_print(ndo, ptr->conn_speed); - ND_TCHECK_2(ptr->recv_winsiz); pptp_recv_winsiz_print(ndo, ptr->recv_winsiz); - ND_TCHECK_2(ptr->pkt_proc_delay); pptp_pkt_proc_delay_print(ndo, ptr->pkt_proc_delay); - ND_TCHECK_4(ptr->phy_chan_id); pptp_phy_chan_id_print(ndo, ptr->phy_chan_id); - - return; - -trunc: - nd_print_trunc(ndo); } static void @@ -749,27 +667,21 @@ pptp_icrq_print(netdissect_options *ndo, { const struct pptp_msg_icrq *ptr = (const struct pptp_msg_icrq *)dat; - ND_TCHECK_2(ptr->call_id); pptp_call_id_print(ndo, ptr->call_id); - ND_TCHECK_2(ptr->call_ser); pptp_call_ser_print(ndo, ptr->call_ser); - ND_TCHECK_4(ptr->bearer_type); pptp_bearer_type_print(ndo, ptr->bearer_type); - ND_TCHECK_4(ptr->phy_chan_id); pptp_phy_chan_id_print(ndo, ptr->phy_chan_id); ND_PRINT(" DIALED_NO_LEN(%u)", GET_BE_U_2(ptr->dialed_no_len)); ND_PRINT(" DIALING_NO_LEN(%u)", GET_BE_U_2(ptr->dialing_no_len)); - ND_TCHECK_SIZE(&ptr->dialed_no); - ND_PRINT(" DIALED_NO(%.64s)", ptr->dialed_no); - ND_TCHECK_SIZE(&ptr->dialing_no); - ND_PRINT(" DIALING_NO(%.64s)", ptr->dialing_no); - ND_TCHECK_SIZE(&ptr->subaddr); - pptp_subaddr_print(ndo, &ptr->subaddr[0]); - - return; - -trunc: - nd_print_trunc(ndo); + ND_PRINT(" DIALED_NO("); + nd_printjnp(ndo, ptr->dialed_no, + ND_MIN(64, GET_BE_U_2(ptr->dialed_no_len))); + ND_PRINT(")"); + ND_PRINT(" DIALING_NO("); + nd_printjnp(ndo, ptr->dialing_no, + ND_MIN(64, GET_BE_U_2(ptr->dialing_no_len))); + ND_PRINT(")"); + pptp_subaddr_print(ndo, ptr->subaddr); } static void @@ -778,25 +690,13 @@ pptp_icrp_print(netdissect_options *ndo, { const struct pptp_msg_icrp *ptr = (const struct pptp_msg_icrp *)dat; - ND_TCHECK_2(ptr->call_id); pptp_call_id_print(ndo, ptr->call_id); - ND_TCHECK_2(ptr->peer_call_id); pptp_peer_call_id_print(ndo, ptr->peer_call_id); - ND_TCHECK_1(ptr->result_code); pptp_result_code_print(ndo, ptr->result_code, PPTP_CTRL_MSG_TYPE_ICRP); - ND_TCHECK_1(ptr->err_code); pptp_err_code_print(ndo, ptr->err_code); - ND_TCHECK_2(ptr->recv_winsiz); pptp_recv_winsiz_print(ndo, ptr->recv_winsiz); - ND_TCHECK_2(ptr->pkt_proc_delay); pptp_pkt_proc_delay_print(ndo, ptr->pkt_proc_delay); - ND_TCHECK_2(ptr->reserved1); PRINT_RESERVED_IF_NOT_ZERO_2(ptr->reserved1); - - return; - -trunc: - nd_print_trunc(ndo); } static void @@ -805,23 +705,12 @@ pptp_iccn_print(netdissect_options *ndo, { const struct pptp_msg_iccn *ptr = (const struct pptp_msg_iccn *)dat; - ND_TCHECK_2(ptr->peer_call_id); pptp_peer_call_id_print(ndo, ptr->peer_call_id); - ND_TCHECK_2(ptr->reserved1); PRINT_RESERVED_IF_NOT_ZERO_2(ptr->reserved1); - ND_TCHECK_4(ptr->conn_speed); pptp_conn_speed_print(ndo, ptr->conn_speed); - ND_TCHECK_2(ptr->recv_winsiz); pptp_recv_winsiz_print(ndo, ptr->recv_winsiz); - ND_TCHECK_2(ptr->pkt_proc_delay); pptp_pkt_proc_delay_print(ndo, ptr->pkt_proc_delay); - ND_TCHECK_4(ptr->framing_type); pptp_framing_type_print(ndo, ptr->framing_type); - - return; - -trunc: - nd_print_trunc(ndo); } static void @@ -830,15 +719,8 @@ pptp_ccrq_print(netdissect_options *ndo, { const struct pptp_msg_ccrq *ptr = (const struct pptp_msg_ccrq *)dat; - ND_TCHECK_2(ptr->call_id); pptp_call_id_print(ndo, ptr->call_id); - ND_TCHECK_2(ptr->reserved1); PRINT_RESERVED_IF_NOT_ZERO_2(ptr->reserved1); - - return; - -trunc: - nd_print_trunc(ndo); } static void @@ -847,23 +729,14 @@ pptp_cdn_print(netdissect_options *ndo, { const struct pptp_msg_cdn *ptr = (const struct pptp_msg_cdn *)dat; - ND_TCHECK_2(ptr->call_id); pptp_call_id_print(ndo, ptr->call_id); - ND_TCHECK_1(ptr->result_code); pptp_result_code_print(ndo, ptr->result_code, PPTP_CTRL_MSG_TYPE_CDN); - ND_TCHECK_1(ptr->err_code); pptp_err_code_print(ndo, ptr->err_code); - ND_TCHECK_2(ptr->cause_code); pptp_cause_code_print(ndo, ptr->cause_code); - ND_TCHECK_2(ptr->reserved1); PRINT_RESERVED_IF_NOT_ZERO_2(ptr->reserved1); - ND_TCHECK_SIZE(&ptr->call_stats); - ND_PRINT(" CALL_STATS(%.128s)", ptr->call_stats); - - return; - -trunc: - nd_print_trunc(ndo); + ND_PRINT(" CALL_STATS("); + nd_printjnp(ndo, ptr->call_stats, 128); + ND_PRINT(")"); } static void @@ -872,9 +745,7 @@ pptp_wen_print(netdissect_options *ndo, { const struct pptp_msg_wen *ptr = (const struct pptp_msg_wen *)dat; - ND_TCHECK_2(ptr->peer_call_id); pptp_peer_call_id_print(ndo, ptr->peer_call_id); - ND_TCHECK_2(ptr->reserved1); PRINT_RESERVED_IF_NOT_ZERO_2(ptr->reserved1); ND_PRINT(" CRC_ERR(%u)", GET_BE_U_4(ptr->crc_err)); ND_PRINT(" FRAMING_ERR(%u)", GET_BE_U_4(ptr->framing_err)); @@ -882,11 +753,6 @@ pptp_wen_print(netdissect_options *ndo, ND_PRINT(" BUFFER_OVERRUN(%u)", GET_BE_U_4(ptr->buffer_overrun)); ND_PRINT(" TIMEOUT_ERR(%u)", GET_BE_U_4(ptr->timeout_err)); ND_PRINT(" ALIGN_ERR(%u)", GET_BE_U_4(ptr->align_err)); - - return; - -trunc: - nd_print_trunc(ndo); } static void @@ -895,17 +761,10 @@ pptp_sli_print(netdissect_options *ndo, { const struct pptp_msg_sli *ptr = (const struct pptp_msg_sli *)dat; - ND_TCHECK_2(ptr->peer_call_id); pptp_peer_call_id_print(ndo, ptr->peer_call_id); - ND_TCHECK_2(ptr->reserved1); PRINT_RESERVED_IF_NOT_ZERO_2(ptr->reserved1); ND_PRINT(" SEND_ACCM(0x%08x)", GET_BE_U_4(ptr->send_accm)); ND_PRINT(" RECV_ACCM(0x%08x)", GET_BE_U_4(ptr->recv_accm)); - - return; - -trunc: - nd_print_trunc(ndo); } void @@ -917,7 +776,8 @@ pptp_print(netdissect_options *ndo, uint16_t ctrl_msg_type; ndo->ndo_protocol = "pptp"; - ND_PRINT(": pptp"); + ND_PRINT(": "); + nd_print_protocol(ndo); hdr = (const struct pptp_hdr *)dat; @@ -952,7 +812,6 @@ pptp_print(netdissect_options *ndo, } else { ND_PRINT(" UNKNOWN_CTRL_MSGTYPE(%u)", ctrl_msg_type); } - ND_TCHECK_2(hdr->reserved0); PRINT_RESERVED_IF_NOT_ZERO_2(hdr->reserved0); dat += 12; @@ -1007,9 +866,4 @@ pptp_print(netdissect_options *ndo, /* do nothing */ break; } - - return; - -trunc: - nd_print_trunc(ndo); }