X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/bb5d16f3b6643904f39a38612a5449cc98db7fda..c2c25496778d0994b1c3874a03d3e411ac1cee6e:/print-lisp.c diff --git a/print-lisp.c b/print-lisp.c index ac95ba69..b995f2df 100644 --- a/print-lisp.c +++ b/print-lisp.c @@ -94,14 +94,10 @@ * +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ */ -#ifdef HAVE_CONFIG_H #include -#endif #include "netdissect-stdinc.h" #include "netdissect.h" -#include -#include #include "ip.h" #include "ip6.h" @@ -131,12 +127,12 @@ enum { }; static const struct tok lisp_type [] = { - { 0, "LISP-Reserved" }, - { 1, "LISP-Map-Request" }, - { 2, "LISP-Map-Reply" }, - { 3, "LISP-Map-Register" }, - { 4, "LISP-Map-Notify" }, - { 8, "LISP-Encapsulated-Contol-Message" }, + { 0, "LISP-Reserved" }, + { 1, "LISP-Map-Request" }, + { 2, "LISP-Map-Reply" }, + { 3, "LISP-Map-Register" }, + { 4, "LISP-Map-Notify" }, + { 8, "LISP-Encapsulated-Control-Message" }, { 0, NULL } }; @@ -244,7 +240,6 @@ lisp_print(netdissect_options *ndo, const u_char *bp, u_int length) uint16_t auth_data_len; uint32_t ttl; const u_char *packet_iterator; - const u_char *loc_ip_pointer; const lisp_map_register_hdr *lisp_hdr; const lisp_map_register_eid *lisp_eid; const lisp_map_register_loc *lisp_loc; @@ -285,8 +280,8 @@ lisp_print(netdissect_options *ndo, const u_char *bp, u_int length) goto invalid; /* Print all the EID records */ - while ((length > packet_offset) && (record_count--)) { - + while ((length > packet_offset) && (record_count != 0)) { + record_count--; ND_TCHECK_LEN(packet_iterator + packet_offset, MAP_REGISTER_EID_LEN); ND_PRINT("\n"); @@ -307,14 +302,12 @@ lisp_print(netdissect_options *ndo, const u_char *bp, u_int length) switch (eid_afi) { case IPv4_AFI: - ND_TCHECK_4(packet_iterator + packet_offset); ND_PRINT(" EID %s/%u,", GET_IPADDR_STRING(packet_iterator + packet_offset), mask_len); packet_offset += 4; break; case IPv6_AFI: - ND_TCHECK_16(packet_iterator + packet_offset); ND_PRINT(" EID %s/%u,", GET_IP6ADDR_STRING(packet_iterator + packet_offset), mask_len); @@ -325,16 +318,15 @@ lisp_print(netdissect_options *ndo, const u_char *bp, u_int length) * No support for LCAF right now. */ return; - break; } ND_PRINT(" %u locator(s)", loc_count); - while (loc_count--) { + while (loc_count != 0) { + loc_count--; ND_TCHECK_LEN(packet_iterator + packet_offset, MAP_REGISTER_LOC_LEN); lisp_loc = (const lisp_map_register_loc *) (packet_iterator + packet_offset); - loc_ip_pointer = (const u_char *) (lisp_loc + 1); packet_offset += MAP_REGISTER_LOC_LEN; loc_afi = GET_BE_U_2(lisp_loc->locator_afi); @@ -343,13 +335,15 @@ lisp_print(netdissect_options *ndo, const u_char *bp, u_int length) switch (loc_afi) { case IPv4_AFI: - ND_TCHECK_4(packet_iterator + packet_offset); - ND_PRINT(" LOC %s", GET_IPADDR_STRING(loc_ip_pointer)); + ND_PRINT(" LOC %s", + GET_IPADDR_STRING(packet_iterator + + packet_offset)); packet_offset += 4; break; case IPv6_AFI: - ND_TCHECK_16(packet_iterator + packet_offset); - ND_PRINT(" LOC %s", GET_IP6ADDR_STRING(loc_ip_pointer)); + ND_PRINT(" LOC %s", + GET_IP6ADDR_STRING(packet_iterator + + packet_offset)); packet_offset += 16; break; default: @@ -392,7 +386,6 @@ trunc: return; invalid: nd_print_invalid(ndo); - return; } static uint8_t @@ -432,8 +425,6 @@ static void lisp_hdr_flag(netdissect_options *ndo, const lisp_map_register_hdr * ND_PRINT(" flags [%s],", bittok2str(map_notify_hdr_flag, "none", GET_BE_U_4(lisp_hdr))); } - - return; } static void action_flag(netdissect_options *ndo, uint8_t act_auth_inc_res)