X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/32e24ead3b2a171e5f5eff50d7231c2514eda9b4..d9acf8cb11e30b7d7744cb0dd05e628109cb73f0:/print-l2tp.c diff --git a/print-l2tp.c b/print-l2tp.c index 6e7804ab..940aa2b6 100644 --- a/print-l2tp.c +++ b/print-l2tp.c @@ -269,7 +269,7 @@ print_string(netdissect_options *ndo, const u_char *dat, u_int length) { u_int i; for (i=0; i> 8), - (EXTRACT_BE_U_2(dat) & 0xff)); + ND_PRINT("%u.%u", (GET_BE_U_2(dat) >> 8), + (GET_BE_U_2(dat) & 0xff)); } static void @@ -358,10 +358,10 @@ l2tp_framing_cap_print(netdissect_options *ndo, const u_char *dat, u_int length) ND_PRINT("AVP too short"); return; } - if (EXTRACT_BE_U_4(dat) & L2TP_FRAMING_CAP_ASYNC_MASK) { + if (GET_BE_U_4(dat) & L2TP_FRAMING_CAP_ASYNC_MASK) { ND_PRINT("A"); } - if (EXTRACT_BE_U_4(dat) & L2TP_FRAMING_CAP_SYNC_MASK) { + if (GET_BE_U_4(dat) & L2TP_FRAMING_CAP_SYNC_MASK) { ND_PRINT("S"); } } @@ -373,10 +373,10 @@ l2tp_bearer_cap_print(netdissect_options *ndo, const u_char *dat, u_int length) ND_PRINT("AVP too short"); return; } - if (EXTRACT_BE_U_4(dat) & L2TP_BEARER_CAP_ANALOG_MASK) { + if (GET_BE_U_4(dat) & L2TP_BEARER_CAP_ANALOG_MASK) { ND_PRINT("A"); } - if (EXTRACT_BE_U_4(dat) & L2TP_BEARER_CAP_DIGITAL_MASK) { + if (GET_BE_U_4(dat) & L2TP_BEARER_CAP_DIGITAL_MASK) { ND_PRINT("D"); } } @@ -389,7 +389,7 @@ l2tp_q931_cc_print(netdissect_options *ndo, const u_char *dat, u_int length) return; } print_16bits_val(ndo, dat); - ND_PRINT(", %02x", EXTRACT_U_1(dat + 2)); + ND_PRINT(", %02x", GET_U_1(dat + 2)); dat += 3; length -= 3; if (length != 0) { @@ -405,10 +405,10 @@ l2tp_bearer_type_print(netdissect_options *ndo, const u_char *dat, u_int length) ND_PRINT("AVP too short"); return; } - if (EXTRACT_BE_U_4(dat) & L2TP_BEARER_TYPE_ANALOG_MASK) { + if (GET_BE_U_4(dat) & L2TP_BEARER_TYPE_ANALOG_MASK) { ND_PRINT("A"); } - if (EXTRACT_BE_U_4(dat) & L2TP_BEARER_TYPE_DIGITAL_MASK) { + if (GET_BE_U_4(dat) & L2TP_BEARER_TYPE_DIGITAL_MASK) { ND_PRINT("D"); } } @@ -420,10 +420,10 @@ l2tp_framing_type_print(netdissect_options *ndo, const u_char *dat, u_int length ND_PRINT("AVP too short"); return; } - if (EXTRACT_BE_U_4(dat) & L2TP_FRAMING_TYPE_ASYNC_MASK) { + if (GET_BE_U_4(dat) & L2TP_FRAMING_TYPE_ASYNC_MASK) { ND_PRINT("A"); } - if (EXTRACT_BE_U_4(dat) & L2TP_FRAMING_TYPE_SYNC_MASK) { + if (GET_BE_U_4(dat) & L2TP_FRAMING_TYPE_SYNC_MASK) { ND_PRINT("S"); } } @@ -442,7 +442,7 @@ l2tp_proxy_auth_type_print(netdissect_options *ndo, const u_char *dat, u_int len return; } ND_PRINT("%s", tok2str(l2tp_authentype2str, - "AuthType-#%u", EXTRACT_BE_U_2(dat))); + "AuthType-#%u", GET_BE_U_2(dat))); } static void @@ -452,7 +452,7 @@ l2tp_proxy_auth_id_print(netdissect_options *ndo, const u_char *dat, u_int lengt ND_PRINT("AVP too short"); return; } - ND_PRINT("%u", EXTRACT_BE_U_2(dat) & L2TP_PROXY_AUTH_ID_MASK); + ND_PRINT("%u", GET_BE_U_2(dat) & L2TP_PROXY_AUTH_ID_MASK); } static void @@ -471,42 +471,42 @@ l2tp_call_errors_print(netdissect_options *ndo, const u_char *dat, u_int length) ND_PRINT("AVP too short"); return; } - val = EXTRACT_BE_U_4(dat); dat += 4; length -= 4; + val = GET_BE_U_4(dat); dat += 4; length -= 4; ND_PRINT("CRCErr=%u ", val); if (length < 4) { ND_PRINT("AVP too short"); return; } - val = EXTRACT_BE_U_4(dat); dat += 4; length -= 4; + val = GET_BE_U_4(dat); dat += 4; length -= 4; ND_PRINT("FrameErr=%u ", val); if (length < 4) { ND_PRINT("AVP too short"); return; } - val = EXTRACT_BE_U_4(dat); dat += 4; length -= 4; + val = GET_BE_U_4(dat); dat += 4; length -= 4; ND_PRINT("HardOver=%u ", val); if (length < 4) { ND_PRINT("AVP too short"); return; } - val = EXTRACT_BE_U_4(dat); dat += 4; length -= 4; + val = GET_BE_U_4(dat); dat += 4; length -= 4; ND_PRINT("BufOver=%u ", val); if (length < 4) { ND_PRINT("AVP too short"); return; } - val = EXTRACT_BE_U_4(dat); dat += 4; length -= 4; + val = GET_BE_U_4(dat); dat += 4; length -= 4; ND_PRINT("Timeout=%u ", val); if (length < 4) { ND_PRINT("AVP too short"); return; } - val = EXTRACT_BE_U_4(dat); dat += 4; length -= 4; + val = GET_BE_U_4(dat); dat += 4; length -= 4; ND_PRINT("AlignErr=%u ", val); } @@ -526,14 +526,14 @@ l2tp_accm_print(netdissect_options *ndo, const u_char *dat, u_int length) ND_PRINT("AVP too short"); return; } - val = EXTRACT_BE_U_4(dat); dat += 4; length -= 4; + val = GET_BE_U_4(dat); dat += 4; length -= 4; ND_PRINT("send=%08x ", val); if (length < 4) { ND_PRINT("AVP too short"); return; } - val = EXTRACT_BE_U_4(dat); dat += 4; length -= 4; + val = GET_BE_U_4(dat); dat += 4; length -= 4; ND_PRINT("recv=%08x ", val); } @@ -545,16 +545,16 @@ l2tp_ppp_discon_cc_print(netdissect_options *ndo, const u_char *dat, u_int lengt return; } /* Disconnect Code */ - ND_PRINT("%04x, ", EXTRACT_BE_U_2(dat)); + ND_PRINT("%04x, ", GET_BE_U_2(dat)); dat += 2; length -= 2; /* Control Protocol Number */ - ND_PRINT("%04x ", EXTRACT_BE_U_2(dat)); + ND_PRINT("%04x ", GET_BE_U_2(dat)); dat += 2; length -= 2; /* Direction */ ND_PRINT("%s", tok2str(l2tp_cc_direction2str, - "Direction-#%u", EXTRACT_U_1(dat))); + "Direction-#%u", GET_U_1(dat))); dat++; length--; @@ -572,9 +572,8 @@ l2tp_avp_print(netdissect_options *ndo, const u_char *dat, u_int length) int hidden = FALSE; ND_PRINT(" "); - - ND_TCHECK_2(dat); /* Flags & Length */ - len = EXTRACT_BE_U_2(dat) & L2TP_AVP_HDR_LEN_MASK; + /* Flags & Length */ + len = GET_BE_U_2(dat) & L2TP_AVP_HDR_LEN_MASK; /* If it is not long enough to contain the header, we'll give up. */ if (len < 6) @@ -595,26 +594,26 @@ l2tp_avp_print(netdissect_options *ndo, const u_char *dat, u_int length) * check whether we go past the end of the AVP. */ - if (EXTRACT_BE_U_2(dat) & L2TP_AVP_HDR_FLAG_MANDATORY) { + if (GET_BE_U_2(dat) & L2TP_AVP_HDR_FLAG_MANDATORY) { ND_PRINT("*"); } - if (EXTRACT_BE_U_2(dat) & L2TP_AVP_HDR_FLAG_HIDDEN) { + if (GET_BE_U_2(dat) & L2TP_AVP_HDR_FLAG_HIDDEN) { hidden = TRUE; ND_PRINT("?"); } dat += 2; - if (EXTRACT_BE_U_2(dat)) { + if (GET_BE_U_2(dat)) { /* Vendor Specific Attribute */ - ND_PRINT("VENDOR%04x:", EXTRACT_BE_U_2(dat)); dat += 2; - ND_PRINT("ATTR%04x", EXTRACT_BE_U_2(dat)); dat += 2; + ND_PRINT("VENDOR%04x:", GET_BE_U_2(dat)); dat += 2; + ND_PRINT("ATTR%04x", GET_BE_U_2(dat)); dat += 2; ND_PRINT("("); print_octets(ndo, dat, len-6); ND_PRINT(")"); } else { /* IETF-defined Attributes */ dat += 2; - attr_type = EXTRACT_BE_U_2(dat); dat += 2; + attr_type = GET_BE_U_2(dat); dat += 2; ND_PRINT("%s", tok2str(l2tp_avp2str, "AVP-#%u", attr_type)); ND_PRINT("("); if (hidden) { @@ -746,10 +745,9 @@ l2tp_print(netdissect_options *ndo, const u_char *dat, u_int length) ndo->ndo_protocol = "l2tp"; flag_t = flag_l = flag_s = flag_o = FALSE; - ND_TCHECK_2(ptr); /* Flags & Version */ - if ((EXTRACT_BE_U_2(ptr) & L2TP_VERSION_MASK) == L2TP_VERSION_L2TP) { + if ((GET_BE_U_2(ptr) & L2TP_VERSION_MASK) == L2TP_VERSION_L2TP) { ND_PRINT(" l2tp:"); - } else if ((EXTRACT_BE_U_2(ptr) & L2TP_VERSION_MASK) == L2TP_VERSION_L2F) { + } else if ((GET_BE_U_2(ptr) & L2TP_VERSION_MASK) == L2TP_VERSION_L2F) { ND_PRINT(" l2f:"); return; /* nothing to do */ } else { @@ -758,23 +756,23 @@ l2tp_print(netdissect_options *ndo, const u_char *dat, u_int length) } ND_PRINT("["); - if (EXTRACT_BE_U_2(ptr) & L2TP_FLAG_TYPE) { + if (GET_BE_U_2(ptr) & L2TP_FLAG_TYPE) { flag_t = TRUE; ND_PRINT("T"); } - if (EXTRACT_BE_U_2(ptr) & L2TP_FLAG_LENGTH) { + if (GET_BE_U_2(ptr) & L2TP_FLAG_LENGTH) { flag_l = TRUE; ND_PRINT("L"); } - if (EXTRACT_BE_U_2(ptr) & L2TP_FLAG_SEQUENCE) { + if (GET_BE_U_2(ptr) & L2TP_FLAG_SEQUENCE) { flag_s = TRUE; ND_PRINT("S"); } - if (EXTRACT_BE_U_2(ptr) & L2TP_FLAG_OFFSET) { + if (GET_BE_U_2(ptr) & L2TP_FLAG_OFFSET) { flag_o = TRUE; ND_PRINT("O"); } - if (EXTRACT_BE_U_2(ptr) & L2TP_FLAG_PRIORITY) + if (GET_BE_U_2(ptr) & L2TP_FLAG_PRIORITY) ND_PRINT("P"); ND_PRINT("]"); @@ -782,37 +780,34 @@ l2tp_print(netdissect_options *ndo, const u_char *dat, u_int length) cnt += 2; if (flag_l) { - ND_TCHECK_2(ptr); /* Length */ - l2tp_len = EXTRACT_BE_U_2(ptr); + l2tp_len = GET_BE_U_2(ptr); ptr += 2; cnt += 2; } else { l2tp_len = 0; } - - ND_TCHECK_2(ptr); /* Tunnel ID */ - ND_PRINT("(%u/", EXTRACT_BE_U_2(ptr)); + /* Tunnel ID */ + ND_PRINT("(%u/", GET_BE_U_2(ptr)); ptr += 2; cnt += 2; - ND_TCHECK_2(ptr); /* Session ID */ - ND_PRINT("%u)", EXTRACT_BE_U_2(ptr)); + /* Session ID */ + ND_PRINT("%u)", GET_BE_U_2(ptr)); ptr += 2; cnt += 2; if (flag_s) { - ND_TCHECK_2(ptr); /* Ns */ - ND_PRINT("Ns=%u,", EXTRACT_BE_U_2(ptr)); + ND_PRINT("Ns=%u,", GET_BE_U_2(ptr)); ptr += 2; cnt += 2; - ND_TCHECK_2(ptr); /* Nr */ - ND_PRINT("Nr=%u", EXTRACT_BE_U_2(ptr)); + ND_PRINT("Nr=%u", GET_BE_U_2(ptr)); ptr += 2; cnt += 2; } - if (flag_o) { - ND_TCHECK_2(ptr); /* Offset Size */ - pad = EXTRACT_BE_U_2(ptr); + if (flag_o) { /* Offset Size */ + pad = GET_BE_U_2(ptr); + /* Offset padding octets in packet buffer? */ + ND_TCHECK_LEN(ptr + 2, pad); ptr += (2 + pad); cnt += (2 + pad); } @@ -858,9 +853,7 @@ l2tp_print(netdissect_options *ndo, const u_char *dat, u_int length) ppp_print(ndo, ptr, length - cnt); ND_PRINT("}"); } - return; - - trunc: +trunc: nd_print_trunc(ndo); }