]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-l2tp.c
DNS: Sync types with IANA
[tcpdump] / print-l2tp.c
index 0d4645448815a5c01e25223ad1238b8718d11758..940aa2b662f24715756a11180f7398f3db702a80 100644 (file)
@@ -572,8 +572,7 @@ l2tp_avp_print(netdissect_options *ndo, const u_char *dat, u_int length)
        int hidden = FALSE;
 
        ND_PRINT(" ");
-
-       ND_TCHECK_2(dat);       /* Flags & Length */
+       /* 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. */
@@ -746,7 +745,6 @@ 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 ((GET_BE_U_2(ptr) & L2TP_VERSION_MASK) == L2TP_VERSION_L2TP) {
                ND_PRINT(" l2tp:");
        } else if ((GET_BE_U_2(ptr) & L2TP_VERSION_MASK) == L2TP_VERSION_L2F) {
@@ -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 = GET_BE_U_2(ptr);
                ptr += 2;
                cnt += 2;
        } else {
                l2tp_len = 0;
        }
-
-       ND_TCHECK_2(ptr);               /* Tunnel ID */
+       /* Tunnel ID */
        ND_PRINT("(%u/", GET_BE_U_2(ptr));
        ptr += 2;
        cnt += 2;
-       ND_TCHECK_2(ptr);               /* Session ID */
+       /* 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,", GET_BE_U_2(ptr));
                ptr += 2;
                cnt += 2;
-               ND_TCHECK_2(ptr);       /* Nr */
                ND_PRINT("Nr=%u",  GET_BE_U_2(ptr));
                ptr += 2;
                cnt += 2;
        }
 
-       if (flag_o) {
-               ND_TCHECK_2(ptr);       /* Offset Size */
+       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);
 }