X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/38700c7f24646dfbc6ac0ed529d3ed727c545cd0..0f328b4aa16b0b47f05a85c440ce1d07719e3cac:/print-pptp.c diff --git a/print-pptp.c b/print-pptp.c index 1691dc6a..9049384f 100644 --- a/print-pptp.c +++ b/print-pptp.c @@ -21,13 +21,15 @@ * PPTP support contributed by Motonori Shindo (mshindo@mshindo.net) */ +/* \summary: Point-to-Point Tunnelling Protocol (PPTP) printer */ + #ifdef HAVE_CONFIG_H #include "config.h" #endif -#include +#include -#include "interface.h" +#include "netdissect.h" #include "extract.h" static const char tstr[] = " [|pptp]"; @@ -272,8 +274,8 @@ pptp_bearer_cap_print(netdissect_options *ndo, const uint32_t *bearer_cap) { ND_PRINT((ndo, " BEARER_CAP(%s%s)", - EXTRACT_32BITS(bearer_cap) & PPTP_BEARER_CAP_DIGITAL_MASK ? "D" : "", - EXTRACT_32BITS(bearer_cap) & PPTP_BEARER_CAP_ANALOG_MASK ? "A" : "")); + EXTRACT_BE_U_4(bearer_cap) & PPTP_BEARER_CAP_DIGITAL_MASK ? "D" : "", + EXTRACT_BE_U_4(bearer_cap) & PPTP_BEARER_CAP_ANALOG_MASK ? "A" : "")); } static const struct tok pptp_btype_str[] = { @@ -288,35 +290,35 @@ pptp_bearer_type_print(netdissect_options *ndo, const uint32_t *bearer_type) { ND_PRINT((ndo, " BEARER_TYPE(%s)", - tok2str(pptp_btype_str, "?", EXTRACT_32BITS(bearer_type)))); + tok2str(pptp_btype_str, "?", EXTRACT_BE_U_4(bearer_type)))); } static void pptp_call_id_print(netdissect_options *ndo, const uint16_t *call_id) { - ND_PRINT((ndo, " CALL_ID(%u)", EXTRACT_16BITS(call_id))); + ND_PRINT((ndo, " CALL_ID(%u)", EXTRACT_BE_U_2(call_id))); } static void pptp_call_ser_print(netdissect_options *ndo, const uint16_t *call_ser) { - ND_PRINT((ndo, " CALL_SER_NUM(%u)", EXTRACT_16BITS(call_ser))); + ND_PRINT((ndo, " CALL_SER_NUM(%u)", EXTRACT_BE_U_2(call_ser))); } static void pptp_cause_code_print(netdissect_options *ndo, const uint16_t *cause_code) { - ND_PRINT((ndo, " CAUSE_CODE(%u)", EXTRACT_16BITS(cause_code))); + ND_PRINT((ndo, " CAUSE_CODE(%u)", EXTRACT_BE_U_2(cause_code))); } static void pptp_conn_speed_print(netdissect_options *ndo, const uint32_t *conn_speed) { - ND_PRINT((ndo, " CONN_SPEED(%u)", EXTRACT_32BITS(conn_speed))); + ND_PRINT((ndo, " CONN_SPEED(%u)", EXTRACT_BE_U_4(conn_speed))); } static const struct tok pptp_errcode_str[] = { @@ -334,9 +336,9 @@ static void pptp_err_code_print(netdissect_options *ndo, const uint8_t *err_code) { - ND_PRINT((ndo, " ERR_CODE(%u", *err_code)); + ND_PRINT((ndo, " ERR_CODE(%u", EXTRACT_U_1(err_code))); if (ndo->ndo_vflag) { - ND_PRINT((ndo, ":%s", tok2str(pptp_errcode_str, "?", *err_code))); + ND_PRINT((ndo, ":%s", tok2str(pptp_errcode_str, "?", EXTRACT_U_1(err_code)))); } ND_PRINT((ndo, ")")); } @@ -345,7 +347,7 @@ static void pptp_firm_rev_print(netdissect_options *ndo, const uint16_t *firm_rev) { - ND_PRINT((ndo, " FIRM_REV(%u)", EXTRACT_16BITS(firm_rev))); + ND_PRINT((ndo, " FIRM_REV(%u)", EXTRACT_BE_U_2(firm_rev))); } static void @@ -353,10 +355,10 @@ pptp_framing_cap_print(netdissect_options *ndo, const uint32_t *framing_cap) { ND_PRINT((ndo, " FRAME_CAP(")); - if (EXTRACT_32BITS(framing_cap) & PPTP_FRAMING_CAP_ASYNC_MASK) { + if (EXTRACT_BE_U_4(framing_cap) & PPTP_FRAMING_CAP_ASYNC_MASK) { ND_PRINT((ndo, "A")); /* Async */ } - if (EXTRACT_32BITS(framing_cap) & PPTP_FRAMING_CAP_SYNC_MASK) { + if (EXTRACT_BE_U_4(framing_cap) & PPTP_FRAMING_CAP_SYNC_MASK) { ND_PRINT((ndo, "S")); /* Sync */ } ND_PRINT((ndo, ")")); @@ -374,7 +376,7 @@ pptp_framing_type_print(netdissect_options *ndo, const uint32_t *framing_type) { ND_PRINT((ndo, " FRAME_TYPE(%s)", - tok2str(pptp_ftype_str, "?", EXTRACT_32BITS(framing_type)))); + tok2str(pptp_ftype_str, "?", EXTRACT_BE_U_4(framing_type)))); } static void @@ -388,35 +390,35 @@ static void pptp_id_print(netdissect_options *ndo, const uint32_t *id) { - ND_PRINT((ndo, " ID(%u)", EXTRACT_32BITS(id))); + ND_PRINT((ndo, " ID(%u)", EXTRACT_BE_U_4(id))); } static void pptp_max_channel_print(netdissect_options *ndo, const uint16_t *max_channel) { - ND_PRINT((ndo, " MAX_CHAN(%u)", EXTRACT_16BITS(max_channel))); + ND_PRINT((ndo, " MAX_CHAN(%u)", EXTRACT_BE_U_2(max_channel))); } static void pptp_peer_call_id_print(netdissect_options *ndo, const uint16_t *peer_call_id) { - ND_PRINT((ndo, " PEER_CALL_ID(%u)", EXTRACT_16BITS(peer_call_id))); + ND_PRINT((ndo, " PEER_CALL_ID(%u)", EXTRACT_BE_U_2(peer_call_id))); } static void pptp_phy_chan_id_print(netdissect_options *ndo, const uint32_t *phy_chan_id) { - ND_PRINT((ndo, " PHY_CHAN_ID(%u)", EXTRACT_32BITS(phy_chan_id))); + ND_PRINT((ndo, " PHY_CHAN_ID(%u)", EXTRACT_BE_U_4(phy_chan_id))); } static void pptp_pkt_proc_delay_print(netdissect_options *ndo, const uint16_t *pkt_proc_delay) { - ND_PRINT((ndo, " PROC_DELAY(%u)", EXTRACT_16BITS(pkt_proc_delay))); + ND_PRINT((ndo, " PROC_DELAY(%u)", EXTRACT_BE_U_2(pkt_proc_delay))); } static void @@ -424,15 +426,15 @@ pptp_proto_ver_print(netdissect_options *ndo, const uint16_t *proto_ver) { ND_PRINT((ndo, " PROTO_VER(%u.%u)", /* Version.Revision */ - EXTRACT_16BITS(proto_ver) >> 8, - EXTRACT_16BITS(proto_ver) & 0xff)); + EXTRACT_BE_U_2(proto_ver) >> 8, + EXTRACT_BE_U_2(proto_ver) & 0xff)); } static void pptp_recv_winsiz_print(netdissect_options *ndo, const uint16_t *recv_winsiz) { - ND_PRINT((ndo, " RECV_WIN(%u)", EXTRACT_16BITS(recv_winsiz))); + ND_PRINT((ndo, " RECV_WIN(%u)", EXTRACT_BE_U_2(recv_winsiz))); } static const struct tok pptp_scrrp_str[] = { @@ -480,7 +482,7 @@ static void pptp_result_code_print(netdissect_options *ndo, const uint8_t *result_code, int ctrl_msg_type) { - ND_PRINT((ndo, " RESULT_CODE(%u", *result_code)); + ND_PRINT((ndo, " RESULT_CODE(%u", EXTRACT_U_1(result_code))); if (ndo->ndo_vflag) { const struct tok *dict = ctrl_msg_type == PPTP_CTRL_MSG_TYPE_SCCRP ? pptp_scrrp_str : @@ -491,7 +493,7 @@ pptp_result_code_print(netdissect_options *ndo, ctrl_msg_type == PPTP_CTRL_MSG_TYPE_CDN ? pptp_cdn_str : NULL; /* assertion error */ if (dict != NULL) - ND_PRINT((ndo, ":%s", tok2str(dict, "?", *result_code))); + ND_PRINT((ndo, ":%s", tok2str(dict, "?", EXTRACT_U_1(result_code)))); } ND_PRINT((ndo, ")")); } @@ -517,7 +519,7 @@ static void pptp_sccrq_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_sccrq *ptr = (struct pptp_msg_sccrq *)dat; + const struct pptp_msg_sccrq *ptr = (const struct pptp_msg_sccrq *)dat; ND_TCHECK(ptr->proto_ver); pptp_proto_ver_print(ndo, &ptr->proto_ver); @@ -545,7 +547,7 @@ static void pptp_sccrp_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_sccrp *ptr = (struct pptp_msg_sccrp *)dat; + const struct pptp_msg_sccrp *ptr = (const struct pptp_msg_sccrp *)dat; ND_TCHECK(ptr->proto_ver); pptp_proto_ver_print(ndo, &ptr->proto_ver); @@ -576,7 +578,7 @@ static void pptp_stopccrq_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_stopccrq *ptr = (struct pptp_msg_stopccrq *)dat; + const struct pptp_msg_stopccrq *ptr = (const struct pptp_msg_stopccrq *)dat; ND_TCHECK(ptr->reason); ND_PRINT((ndo, " REASON(%u", ptr->reason)); @@ -610,7 +612,7 @@ static void pptp_stopccrp_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_stopccrp *ptr = (struct pptp_msg_stopccrp *)dat; + const struct pptp_msg_stopccrp *ptr = (const struct pptp_msg_stopccrp *)dat; ND_TCHECK(ptr->result_code); pptp_result_code_print(ndo, &ptr->result_code, PPTP_CTRL_MSG_TYPE_StopCCRP); @@ -628,7 +630,7 @@ static void pptp_echorq_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_echorq *ptr = (struct pptp_msg_echorq *)dat; + const struct pptp_msg_echorq *ptr = (const struct pptp_msg_echorq *)dat; ND_TCHECK(ptr->id); pptp_id_print(ndo, &ptr->id); @@ -643,7 +645,7 @@ static void pptp_echorp_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_echorp *ptr = (struct pptp_msg_echorp *)dat; + const struct pptp_msg_echorp *ptr = (const struct pptp_msg_echorp *)dat; ND_TCHECK(ptr->id); pptp_id_print(ndo, &ptr->id); @@ -663,16 +665,16 @@ static void pptp_ocrq_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_ocrq *ptr = (struct pptp_msg_ocrq *)dat; + const struct pptp_msg_ocrq *ptr = (const struct pptp_msg_ocrq *)dat; ND_TCHECK(ptr->call_id); pptp_call_id_print(ndo, &ptr->call_id); ND_TCHECK(ptr->call_ser); pptp_call_ser_print(ndo, &ptr->call_ser); ND_TCHECK(ptr->min_bps); - ND_PRINT((ndo, " MIN_BPS(%u)", EXTRACT_32BITS(&ptr->min_bps))); + ND_PRINT((ndo, " MIN_BPS(%u)", EXTRACT_BE_U_4(&ptr->min_bps))); ND_TCHECK(ptr->max_bps); - ND_PRINT((ndo, " MAX_BPS(%u)", EXTRACT_32BITS(&ptr->max_bps))); + ND_PRINT((ndo, " MAX_BPS(%u)", EXTRACT_BE_U_4(&ptr->max_bps))); ND_TCHECK(ptr->bearer_type); pptp_bearer_type_print(ndo, &ptr->bearer_type); ND_TCHECK(ptr->framing_type); @@ -682,7 +684,7 @@ pptp_ocrq_print(netdissect_options *ndo, ND_TCHECK(ptr->pkt_proc_delay); pptp_pkt_proc_delay_print(ndo, &ptr->pkt_proc_delay); ND_TCHECK(ptr->phone_no_len); - ND_PRINT((ndo, " PHONE_NO_LEN(%u)", EXTRACT_16BITS(&ptr->phone_no_len))); + ND_PRINT((ndo, " PHONE_NO_LEN(%u)", EXTRACT_BE_U_2(&ptr->phone_no_len))); ND_TCHECK(ptr->reserved1); ND_TCHECK(ptr->phone_no); ND_PRINT((ndo, " PHONE_NO(%.64s)", ptr->phone_no)); @@ -699,7 +701,7 @@ static void pptp_ocrp_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_ocrp *ptr = (struct pptp_msg_ocrp *)dat; + const struct pptp_msg_ocrp *ptr = (const struct pptp_msg_ocrp *)dat; ND_TCHECK(ptr->call_id); pptp_call_id_print(ndo, &ptr->call_id); @@ -730,7 +732,7 @@ static void pptp_icrq_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_icrq *ptr = (struct pptp_msg_icrq *)dat; + const struct pptp_msg_icrq *ptr = (const struct pptp_msg_icrq *)dat; ND_TCHECK(ptr->call_id); pptp_call_id_print(ndo, &ptr->call_id); @@ -741,9 +743,9 @@ pptp_icrq_print(netdissect_options *ndo, ND_TCHECK(ptr->phy_chan_id); pptp_phy_chan_id_print(ndo, &ptr->phy_chan_id); ND_TCHECK(ptr->dialed_no_len); - ND_PRINT((ndo, " DIALED_NO_LEN(%u)", EXTRACT_16BITS(&ptr->dialed_no_len))); + ND_PRINT((ndo, " DIALED_NO_LEN(%u)", EXTRACT_BE_U_2(&ptr->dialed_no_len))); ND_TCHECK(ptr->dialing_no_len); - ND_PRINT((ndo, " DIALING_NO_LEN(%u)", EXTRACT_16BITS(&ptr->dialing_no_len))); + ND_PRINT((ndo, " DIALING_NO_LEN(%u)", EXTRACT_BE_U_2(&ptr->dialing_no_len))); ND_TCHECK(ptr->dialed_no); ND_PRINT((ndo, " DIALED_NO(%.64s)", ptr->dialed_no)); ND_TCHECK(ptr->dialing_no); @@ -761,7 +763,7 @@ static void pptp_icrp_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_icrp *ptr = (struct pptp_msg_icrp *)dat; + const struct pptp_msg_icrp *ptr = (const struct pptp_msg_icrp *)dat; ND_TCHECK(ptr->call_id); pptp_call_id_print(ndo, &ptr->call_id); @@ -787,7 +789,7 @@ static void pptp_iccn_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_iccn *ptr = (struct pptp_msg_iccn *)dat; + const struct pptp_msg_iccn *ptr = (const struct pptp_msg_iccn *)dat; ND_TCHECK(ptr->peer_call_id); pptp_peer_call_id_print(ndo, &ptr->peer_call_id); @@ -811,7 +813,7 @@ static void pptp_ccrq_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_ccrq *ptr = (struct pptp_msg_ccrq *)dat; + const struct pptp_msg_ccrq *ptr = (const struct pptp_msg_ccrq *)dat; ND_TCHECK(ptr->call_id); pptp_call_id_print(ndo, &ptr->call_id); @@ -827,7 +829,7 @@ static void pptp_cdn_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_cdn *ptr = (struct pptp_msg_cdn *)dat; + const struct pptp_msg_cdn *ptr = (const struct pptp_msg_cdn *)dat; ND_TCHECK(ptr->call_id); pptp_call_id_print(ndo, &ptr->call_id); @@ -851,23 +853,23 @@ static void pptp_wen_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_wen *ptr = (struct pptp_msg_wen *)dat; + const struct pptp_msg_wen *ptr = (const struct pptp_msg_wen *)dat; ND_TCHECK(ptr->peer_call_id); pptp_peer_call_id_print(ndo, &ptr->peer_call_id); ND_TCHECK(ptr->reserved1); ND_TCHECK(ptr->crc_err); - ND_PRINT((ndo, " CRC_ERR(%u)", EXTRACT_32BITS(&ptr->crc_err))); + ND_PRINT((ndo, " CRC_ERR(%u)", EXTRACT_BE_U_4(&ptr->crc_err))); ND_TCHECK(ptr->framing_err); - ND_PRINT((ndo, " FRAMING_ERR(%u)", EXTRACT_32BITS(&ptr->framing_err))); + ND_PRINT((ndo, " FRAMING_ERR(%u)", EXTRACT_BE_U_4(&ptr->framing_err))); ND_TCHECK(ptr->hardware_overrun); - ND_PRINT((ndo, " HARDWARE_OVERRUN(%u)", EXTRACT_32BITS(&ptr->hardware_overrun))); + ND_PRINT((ndo, " HARDWARE_OVERRUN(%u)", EXTRACT_BE_U_4(&ptr->hardware_overrun))); ND_TCHECK(ptr->buffer_overrun); - ND_PRINT((ndo, " BUFFER_OVERRUN(%u)", EXTRACT_32BITS(&ptr->buffer_overrun))); + ND_PRINT((ndo, " BUFFER_OVERRUN(%u)", EXTRACT_BE_U_4(&ptr->buffer_overrun))); ND_TCHECK(ptr->timeout_err); - ND_PRINT((ndo, " TIMEOUT_ERR(%u)", EXTRACT_32BITS(&ptr->timeout_err))); + ND_PRINT((ndo, " TIMEOUT_ERR(%u)", EXTRACT_BE_U_4(&ptr->timeout_err))); ND_TCHECK(ptr->align_err); - ND_PRINT((ndo, " ALIGN_ERR(%u)", EXTRACT_32BITS(&ptr->align_err))); + ND_PRINT((ndo, " ALIGN_ERR(%u)", EXTRACT_BE_U_4(&ptr->align_err))); return; @@ -879,15 +881,15 @@ static void pptp_sli_print(netdissect_options *ndo, const u_char *dat) { - struct pptp_msg_sli *ptr = (struct pptp_msg_sli *)dat; + const struct pptp_msg_sli *ptr = (const struct pptp_msg_sli *)dat; ND_TCHECK(ptr->peer_call_id); pptp_peer_call_id_print(ndo, &ptr->peer_call_id); ND_TCHECK(ptr->reserved1); ND_TCHECK(ptr->send_accm); - ND_PRINT((ndo, " SEND_ACCM(0x%08x)", EXTRACT_32BITS(&ptr->send_accm))); + ND_PRINT((ndo, " SEND_ACCM(0x%08x)", EXTRACT_BE_U_4(&ptr->send_accm))); ND_TCHECK(ptr->recv_accm); - ND_PRINT((ndo, " RECV_ACCM(0x%08x)", EXTRACT_32BITS(&ptr->recv_accm))); + ND_PRINT((ndo, " RECV_ACCM(0x%08x)", EXTRACT_BE_U_4(&ptr->recv_accm))); return; @@ -905,15 +907,15 @@ pptp_print(netdissect_options *ndo, ND_PRINT((ndo, ": pptp")); - hdr = (struct pptp_hdr *)dat; + hdr = (const struct pptp_hdr *)dat; ND_TCHECK(hdr->length); if (ndo->ndo_vflag) { - ND_PRINT((ndo, " Length=%u", EXTRACT_16BITS(&hdr->length))); + ND_PRINT((ndo, " Length=%u", EXTRACT_BE_U_2(&hdr->length))); } ND_TCHECK(hdr->msg_type); if (ndo->ndo_vflag) { - switch(EXTRACT_16BITS(&hdr->msg_type)) { + switch(EXTRACT_BE_U_2(&hdr->msg_type)) { case PPTP_MSG_TYPE_CTRL: ND_PRINT((ndo, " CTRL-MSG")); break; @@ -927,7 +929,7 @@ pptp_print(netdissect_options *ndo, } ND_TCHECK(hdr->magic_cookie); - mc = EXTRACT_32BITS(&hdr->magic_cookie); + mc = EXTRACT_BE_U_4(&hdr->magic_cookie); if (mc != PPTP_MAGIC_COOKIE) { ND_PRINT((ndo, " UNEXPECTED Magic-Cookie!!(%08x)", mc)); } @@ -935,7 +937,7 @@ pptp_print(netdissect_options *ndo, ND_PRINT((ndo, " Magic-Cookie=%08x", mc)); } ND_TCHECK(hdr->ctrl_msg_type); - ctrl_msg_type = EXTRACT_16BITS(&hdr->ctrl_msg_type); + ctrl_msg_type = EXTRACT_BE_U_2(&hdr->ctrl_msg_type); if (ctrl_msg_type < PPTP_MAX_MSGTYPE_INDEX) { ND_PRINT((ndo, " CTRL_MSGTYPE=%s", pptp_message_type_string[ctrl_msg_type]));