X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/620d5f15797a30b023b4c5aabc8e55cfe561a992..refs/heads/tcpdump-4.1:/print-bfd.c diff --git a/print-bfd.c b/print-bfd.c index 9225412c..f157684f 100644 --- a/print-bfd.c +++ b/print-bfd.c @@ -15,7 +15,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-bfd.c,v 1.7 2005-04-27 23:14:02 hannes Exp $"; + "@(#) $Header: /tcpdump/master/tcpdump/print-bfd.c,v 1.10 2006-02-02 06:35:52 hannes Exp $"; #endif #ifdef HAVE_CONFIG_H @@ -146,7 +146,7 @@ static const struct tok bfd_v0_flag_values[] = { { 0, NULL } }; -#define BFD_FLAG_AUTH 0x40 +#define BFD_FLAG_AUTH 0x04 static const struct tok bfd_v1_flag_values[] = { { 0x20, "Poll" }, @@ -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): @@ -219,8 +223,8 @@ bfd_print(register const u_char *pptr, register u_int len, register u_int port) printf("BFDv%u, %s, State %s, Flags: [%s], length: %u", version, tok2str(bfd_port_values, "unknown (%u)", port), - tok2str(bfd_v1_state_values, "unknown (%u)", bfd_header->flags & 0xc0), - bittok2str(bfd_v1_flag_values, "none", bfd_header->flags), + tok2str(bfd_v1_state_values, "unknown (%u)", (bfd_header->flags & 0xc0) >> 6), + bittok2str(bfd_v1_flag_values, "none", bfd_header->flags & 0x3f), len); return; } @@ -229,8 +233,8 @@ bfd_print(register const u_char *pptr, register u_int len, register u_int port) version, len, tok2str(bfd_port_values, "unknown (%u)", port), - tok2str(bfd_v1_state_values, "unknown (%u)", bfd_header->flags & 0xc0), - bittok2str(bfd_v1_flag_values, "none", bfd_header->flags), + tok2str(bfd_v1_state_values, "unknown (%u)", (bfd_header->flags & 0xc0) >> 6), + bittok2str(bfd_v1_flag_values, "none", bfd_header->flags & 0x3f), tok2str(bfd_diag_values,"unknown",BFD_EXTRACT_DIAG(bfd_header->version_diag)), BFD_EXTRACT_DIAG(bfd_header->version_diag));