X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/6288c273b66fa124b58af66026151fff1d5931c2..c3dc126cfa7250e096ae2edf329502c4ab5eda0a:/print-lisp.c diff --git a/print-lisp.c b/print-lisp.c index 920bfceb..cb939c3a 100644 --- a/print-lisp.c +++ b/print-lisp.c @@ -100,8 +100,6 @@ #include "netdissect-stdinc.h" #include "netdissect.h" -#include -#include #include "ip.h" #include "ip6.h" @@ -131,12 +129,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 +242,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 +282,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"); @@ -323,16 +320,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); @@ -341,13 +337,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: