]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-ldp.c
Include <config.h> unconditionally
[tcpdump] / print-ldp.c
index b57244509373f810fd893c726d1ddaf9e5606c8e..1ee453b20f5c9fd9b759c93ba13b96e4a72929b4 100644 (file)
@@ -16,9 +16,7 @@
 
 /* \summary: Label Distribution Protocol (LDP) printer */
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#endif
 
 #include "netdissect-stdinc.h"
 
@@ -309,7 +307,6 @@ ldp_tlv_print(netdissect_options *ndo,
         switch (af) {
         case AFNUM_INET:
            while(tlv_tlen >= sizeof(nd_ipv4)) {
-               ND_TCHECK_LEN(tptr, sizeof(nd_ipv4));
                ND_PRINT(" %s", GET_IPADDR_STRING(tptr));
                tlv_tlen-=sizeof(nd_ipv4);
                tptr+=sizeof(nd_ipv4);
@@ -317,7 +314,6 @@ ldp_tlv_print(netdissect_options *ndo,
             break;
         case AFNUM_INET6:
            while(tlv_tlen >= sizeof(nd_ipv6)) {
-               ND_TCHECK_LEN(tptr, sizeof(nd_ipv6));
                ND_PRINT(" %s", GET_IP6ADDR_STRING(tptr));
                tlv_tlen-=sizeof(nd_ipv6);
                tptr+=sizeof(nd_ipv6);
@@ -330,11 +326,17 @@ ldp_tlv_print(netdissect_options *ndo,
        break;
 
     case LDP_TLV_COMMON_SESSION:
-       TLV_TCHECK(8);
+       TLV_TCHECK(14);
        ND_PRINT("\n\t      Version: %u, Keepalive: %us, Flags: [Downstream %s, Loop Detection %s]",
               GET_BE_U_2(tptr), GET_BE_U_2(tptr + 2),
-              (GET_BE_U_2(tptr + 6)&0x8000) ? "On Demand" : "Unsolicited",
-              (GET_BE_U_2(tptr + 6)&0x4000) ? "Enabled" : "Disabled"
+              (GET_BE_U_2(tptr + 4)&0x8000) ? "On Demand" : "Unsolicited",
+              (GET_BE_U_2(tptr + 4)&0x4000) ? "Enabled" : "Disabled"
+              );
+       ND_PRINT("\n\t      Path Vector Limit %u, Max-PDU length: %u, Receiver Label-Space-ID %s:%u",
+              GET_U_1(tptr+5),
+              GET_BE_U_2(tptr+6),
+              GET_IPADDR_STRING(tptr+8),
+              GET_BE_U_2(tptr+12)
               );
        break;
 
@@ -366,8 +368,7 @@ ldp_tlv_print(netdissect_options *ndo,
                    ND_PRINT(": IPv4 prefix (invalid length)");
                else
                    ND_PRINT(": IPv4 prefix %s", buf);
-           }
-           else if (af == AFNUM_INET6) {
+           } else if (af == AFNUM_INET6) {
                i=decode_prefix6(ndo, tptr, tlv_tlen, buf, sizeof(buf));
                if (i == -2)
                    goto trunc;
@@ -377,8 +378,7 @@ ldp_tlv_print(netdissect_options *ndo,
                    ND_PRINT(": IPv6 prefix (invalid length)");
                else
                    ND_PRINT(": IPv6 prefix %s", buf);
-           }
-           else
+           } else
                ND_PRINT(": Address family %u prefix", af);
            break;
        case LDP_FEC_HOSTADDRESS:
@@ -540,8 +540,7 @@ ldp_tlv_print(netdissect_options *ndo,
     return(tlv_len+4); /* Type & Length fields not included */
 
 trunc:
-    nd_print_trunc(ndo);
-    return 0;
+    nd_trunc_longjmp(ndo);
 
 invalid:
     return(tlv_len+4); /* Type & Length fields not included */
@@ -596,10 +595,10 @@ ldp_pdu_print(netdissect_options *ndo,
     pdu_len = GET_BE_U_2(ldp_com_header->pdu_length);
     if (pdu_len < sizeof(struct ldp_common_header)-4) {
         /* length too short */
-        ND_PRINT("%sLDP, pdu-length: %u (too short, < %u)",
-               (ndo->ndo_vflag < 1) ? "" : "\n\t",
-               pdu_len,
-               (u_int)(sizeof(struct ldp_common_header)-4));
+        ND_PRINT("%sLDP, pdu-length: %u (too short, < %zu)",
+                 (ndo->ndo_vflag < 1) ? "" : "\n\t",
+                 pdu_len,
+                 sizeof(struct ldp_common_header)-4);
         return 0;
     }
 
@@ -629,13 +628,13 @@ ldp_pdu_print(netdissect_options *ndo,
         if (msg_len < sizeof(struct ldp_msg_header)-4) {
             /* length too short */
             /* FIXME vendor private / experimental check */
-            ND_PRINT("\n\t  %s Message (0x%04x), length: %u (too short, < %u)",
-                   tok2str(ldp_msg_values,
-                           "Unknown",
-                           msg_type),
-                   msg_type,
-                   msg_len,
-                   (u_int)(sizeof(struct ldp_msg_header)-4));
+            ND_PRINT("\n\t  %s Message (0x%04x), length: %u (too short, < %zu)",
+                     tok2str(ldp_msg_values,
+                             "Unknown",
+                             msg_type),
+                     msg_type,
+                     msg_len,
+                     sizeof(struct ldp_msg_header)-4);
             return 0;
         }
 
@@ -699,6 +698,5 @@ ldp_pdu_print(netdissect_options *ndo,
     }
     return pdu_len+4;
 trunc:
-    nd_print_trunc(ndo);
-    return 0;
+    nd_trunc_longjmp(ndo);
 }