X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/7ea344d76a21255867275a199d1ddb1e5b358f77..5287bffd3f4fa1fda9d7734b45f8cf02391d3855:/print-babel.c diff --git a/print-babel.c b/print-babel.c index ea724666..df0c5941 100644 --- a/print-babel.c +++ b/print-babel.c @@ -26,11 +26,13 @@ * SUCH DAMAGE. */ +/* \summary: Babel Routing Protocol printer */ + #ifdef HAVE_CONFIG_H #include "config.h" #endif -#include +#include #include #include @@ -125,11 +127,7 @@ format_prefix(netdissect_options *ndo, const u_char *prefix, unsigned char plen) if(plen >= 96 && memcmp(prefix, v4prefix, 12) == 0) snprintf(buf, 50, "%s/%u", ipaddr_string(ndo, prefix + 12), plen - 96); else -#ifdef INET6 snprintf(buf, 50, "%s/%u", ip6addr_string(ndo, prefix), plen); -#else - snprintf(buf, 50, "IPv6 addresses not supported"); -#endif buf[49] = '\0'; return buf; } @@ -140,11 +138,7 @@ format_address(netdissect_options *ndo, const u_char *prefix) if(memcmp(prefix, v4prefix, 12) == 0) return ipaddr_string(ndo, prefix + 12); else -#ifdef INET6 return ip6addr_string(ndo, prefix); -#else - return "IPv6 addresses not supported"; -#endif } static const char * @@ -316,14 +310,14 @@ subtlvs_print(netdissect_options *ndo, if(tlv_type == MESSAGE_HELLO) { if(sublen < 4) goto invalid; - t1 = EXTRACT_32BITS(cp); + t1 = EXTRACT_BE_32BITS(cp); ND_PRINT((ndo, " %s", format_timestamp(t1))); } else if(tlv_type == MESSAGE_IHU) { if(sublen < 8) goto invalid; - t1 = EXTRACT_32BITS(cp); + t1 = EXTRACT_BE_32BITS(cp); ND_PRINT((ndo, " %s", format_timestamp(t1))); - t2 = EXTRACT_32BITS(cp + 4); + t2 = EXTRACT_BE_32BITS(cp + 4); ND_PRINT((ndo, "|%s", format_timestamp(t2))); } else ND_PRINT((ndo, " (bogus)")); @@ -337,7 +331,7 @@ subtlvs_print(netdissect_options *ndo, return; invalid: - ND_PRINT((ndo, " (invalid)")); + ND_PRINT((ndo, "%s", istr)); } #define ICHECK(i, l) \ @@ -356,7 +350,7 @@ babel_print_v2(netdissect_options *ndo, ND_TCHECK2(*cp, 4); if (length < 4) goto invalid; - bodylen = EXTRACT_16BITS(cp + 2); + bodylen = EXTRACT_BE_16BITS(cp + 2); ND_PRINT((ndo, " (%u)", bodylen)); /* Process the TLVs in the body */ @@ -397,8 +391,8 @@ babel_print_v2(netdissect_options *ndo, else { ND_PRINT((ndo, "\n\tAcknowledgment Request ")); if(len < 6) goto invalid; - nonce = EXTRACT_16BITS(message + 4); - interval = EXTRACT_16BITS(message + 6); + nonce = EXTRACT_BE_16BITS(message + 4); + interval = EXTRACT_BE_16BITS(message + 6); ND_PRINT((ndo, "%04x %s", nonce, format_interval(interval))); } } @@ -411,7 +405,7 @@ babel_print_v2(netdissect_options *ndo, else { ND_PRINT((ndo, "\n\tAcknowledgment ")); if(len < 2) goto invalid; - nonce = EXTRACT_16BITS(message + 2); + nonce = EXTRACT_BE_16BITS(message + 2); ND_PRINT((ndo, "%04x", nonce)); } } @@ -424,8 +418,8 @@ babel_print_v2(netdissect_options *ndo, else { ND_PRINT((ndo, "\n\tHello ")); if(len < 6) goto invalid; - seqno = EXTRACT_16BITS(message + 4); - interval = EXTRACT_16BITS(message + 6); + seqno = EXTRACT_BE_16BITS(message + 4); + interval = EXTRACT_BE_16BITS(message + 6); ND_PRINT((ndo, "seqno %u interval %s", seqno, format_interval(interval))); /* Extra data. */ if(len > 6) @@ -443,8 +437,8 @@ babel_print_v2(netdissect_options *ndo, int rc; ND_PRINT((ndo, "\n\tIHU ")); if(len < 6) goto invalid; - txcost = EXTRACT_16BITS(message + 4); - interval = EXTRACT_16BITS(message + 6); + txcost = EXTRACT_BE_16BITS(message + 4); + interval = EXTRACT_BE_16BITS(message + 6); rc = network_address(message[2], message + 8, len - 6, address); if(rc < 0) { ND_PRINT((ndo, "%s", tstr)); break; } ND_PRINT((ndo, "%s txcost %u interval %s", @@ -506,9 +500,9 @@ babel_print_v2(netdissect_options *ndo, message[2] == 1 ? v4_prefix : v6_prefix, len - 10, prefix); if(rc < 0) goto invalid; - interval = EXTRACT_16BITS(message + 6); - seqno = EXTRACT_16BITS(message + 8); - metric = EXTRACT_16BITS(message + 10); + interval = EXTRACT_BE_16BITS(message + 6); + seqno = EXTRACT_BE_16BITS(message + 8); + metric = EXTRACT_BE_16BITS(message + 10); ND_PRINT((ndo, "%s%s%s %s metric %u seqno %u interval %s", (message[3] & 0x80) ? "/prefix": "", (message[3] & 0x40) ? "/id" : "", @@ -555,7 +549,7 @@ babel_print_v2(netdissect_options *ndo, u_char prefix[16], plen; ND_PRINT((ndo, "\n\tMH-Request ")); if(len < 14) goto invalid; - seqno = EXTRACT_16BITS(message + 4); + seqno = EXTRACT_BE_16BITS(message + 4); rc = network_prefix(message[2], message[3], 0, message + 16, NULL, len - 14, prefix); if(rc < 0) goto invalid; @@ -572,8 +566,8 @@ babel_print_v2(netdissect_options *ndo, else { ND_PRINT((ndo, "\n\tTS/PC ")); if(len < 6) goto invalid; - ND_PRINT((ndo, "timestamp %u packetcounter %u", EXTRACT_32BITS (message + 4), - EXTRACT_16BITS(message + 2))); + ND_PRINT((ndo, "timestamp %u packetcounter %u", EXTRACT_BE_32BITS(message + 4), + EXTRACT_BE_16BITS(message + 2))); } break; case MESSAGE_HMAC : { @@ -583,7 +577,7 @@ babel_print_v2(netdissect_options *ndo, unsigned j; ND_PRINT((ndo, "\n\tHMAC ")); if(len < 18) goto invalid; - ND_PRINT((ndo, "key-id %u digest-%u ", EXTRACT_16BITS(message + 2), len - 2)); + ND_PRINT((ndo, "key-id %u digest-%u ", EXTRACT_BE_16BITS(message + 2), len - 2)); for (j = 0; j < len - 2; j++) ND_PRINT((ndo, "%02X", message[4 + j])); } @@ -605,9 +599,9 @@ babel_print_v2(netdissect_options *ndo, src_plen = message[3]; plen = message[4]; omitted = message[5]; - interval = EXTRACT_16BITS(message + 6); - seqno = EXTRACT_16BITS(message + 8); - metric = EXTRACT_16BITS(message + 10); + interval = EXTRACT_BE_16BITS(message + 6); + seqno = EXTRACT_BE_16BITS(message + 8); + metric = EXTRACT_BE_16BITS(message + 10); rc = network_prefix(ae, plen, omitted, message + 2 + parsed_len, ae == 1 ? v4_prefix : v6_prefix, len - parsed_len, prefix); @@ -679,7 +673,7 @@ babel_print_v2(netdissect_options *ndo, if(len < 14) goto invalid; ae = message[2]; plen = message[3]; - seqno = EXTRACT_16BITS(message + 4); + seqno = EXTRACT_BE_16BITS(message + 4); hopc = message[6]; src_plen = message[7]; router_id = message + 8; @@ -718,6 +712,6 @@ babel_print_v2(netdissect_options *ndo, return; invalid: - ND_PRINT((ndo, " (invalid)")); + ND_PRINT((ndo, "%s", istr)); return; }