]> The Tcpdump Group git mirrors - tcpdump/commitdiff
Based on a patch from Marc Binderberger, fix the handling of non-control
authorGuy Harris <[email protected]>
Fri, 27 Mar 2009 08:25:39 +0000 (01:25 -0700)
committerGuy Harris <[email protected]>
Fri, 27 Mar 2009 08:25:39 +0000 (01:25 -0700)
packets.

print-bfd.c

index 6406168b1b5ddd582c7945d2e0b6a5f75112108a..f157684f075e76f590d92ac56eddf36794e4585e 100644 (file)
@@ -171,13 +171,17 @@ bfd_print(register const u_char *pptr, register u_int len, register u_int port)
 {
         const struct bfd_header_t *bfd_header;
         const struct bfd_auth_header_t *bfd_auth_header;
-        u_int8_t version;
+        u_int8_t version = 0;
 
         bfd_header = (const struct bfd_header_t *)pptr;
-        TCHECK(*bfd_header);
-        version = BFD_EXTRACT_VERSION(bfd_header->version_diag);
-
-        switch (port << 8 | version) {
+        if (port == BFD_CONTROL_PORT) {
+            TCHECK(*bfd_header);
+            version = BFD_EXTRACT_VERSION(bfd_header->version_diag);
+        } else if (port == BFD_ECHO_PORT) {
+            /* Echo is BFD v1 only */
+            version = 1;
+        }
+        switch ((port << 8) | version) {
 
             /* BFDv0 */
         case (BFD_CONTROL_PORT << 8):