]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-fr.c
bgp: Parse BGP extended message support capability
[tcpdump] / print-fr.c
index d52e3cefc2ad44cedb9fbc180b90fbde5407c572..f0d7fbeb12b38d4019a4f0bfa618e6124ec74966 100644 (file)
@@ -147,14 +147,22 @@ q922_string(netdissect_options *ndo, const u_char *p, u_int length)
 
     static u_int dlci, addr_len;
     static uint32_t flags;
-    static char buffer[sizeof("DLCI xxxxxxxxxx")];
+    static char buffer[sizeof("parse_q922_header() returned XXXXXXXXXXX")];
+    int ret;
     memset(buffer, 0, sizeof(buffer));
 
-    if (parse_q922_header(ndo, p, &dlci, &addr_len, &flags, length) == 1){
+    ret = parse_q922_header(ndo, p, &dlci, &addr_len, &flags, length);
+    if (ret == 1) {
         snprintf(buffer, sizeof(buffer), "DLCI %u", dlci);
+        return buffer;
+    } else if (ret == 0) {
+        return "<Invalid DLCI>";
+    } else if (ret == -1) {
+        return "<Truncated>";
+    } else {
+        snprintf(buffer, sizeof(buffer), "parse_q922_header() returned %d", ret);
+        return buffer;
     }
-
-    return buffer;
 }
 
 
@@ -613,7 +621,6 @@ frf15_print(netdissect_options *ndo,
 
     if (length < 2)
         goto trunc;
-    ND_TCHECK_2(p);
 
     flags = GET_U_1(p)&MFR_BEC_MASK;
     sequence_num = (GET_U_1(p)&0x1e)<<7 | GET_U_1(p + 1);
@@ -629,7 +636,7 @@ frf15_print(netdissect_options *ndo,
  * dig as deep as we can - e.g. on the first (B) fragment
  * there is enough payload to print the IP header
  * on non (B) fragments it depends if the fragmentation
- * model is end-to-end or interface based wether we want to print
+ * model is end-to-end or interface based whether we want to print
  * another Q.922 header
  */
     return;
@@ -919,7 +926,6 @@ q933_print(netdissect_options *ndo,
        ND_PRINT("%s, codeset %u", is_ansi ? "ANSI" : "CCITT", codeset);
 
        if (call_ref_length != 0) {
-               ND_TCHECK_1(p);
                if (call_ref_length > 1 || GET_U_1(p) != 0) {
                        /*
                         * Not a dummy call reference.