X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/855bbe873d1d2d2a5e5ef950d060ed394cf27d94..HEAD:/print-slow.c?ds=sidebyside diff --git a/print-slow.c b/print-slow.c index 467a1d6f..649e2a0f 100644 --- a/print-slow.c +++ b/print-slow.c @@ -20,12 +20,11 @@ /* \summary: IEEE "slow protocols" (802.3ad/802.3ah) printer */ -#ifdef HAVE_CONFIG_H #include -#endif #include "netdissect-stdinc.h" +#define ND_LONGJMP_FROM_TCHECK #include "netdissect.h" #include "extract.h" #include "addrtoname.h" @@ -202,7 +201,7 @@ static const struct tok slow_tlv_values[] = { struct lacp_tlv_actor_partner_info_t { nd_uint16_t sys_pri; - nd_mac_addr sys; + nd_mac48 sys; nd_uint16_t key; nd_uint16_t port_pri; nd_uint16_t port; @@ -229,7 +228,7 @@ struct lacp_tlv_collector_info_t { struct marker_tlv_marker_info_t { nd_uint16_t req_port; - nd_mac_addr req_sys; + nd_mac48 req_sys; nd_uint32_t req_trans_id; nd_byte pad[2]; }; @@ -354,12 +353,11 @@ slow_marker_lacp_print(netdissect_options *ndo, const struct marker_tlv_marker_info_t *marker_tlv_marker_info; } tlv_ptr; - while(tlen>0) { + while(tlen != 0) { /* is the packet big enough to include the tlv header ? */ if (tlen < sizeof(struct tlv_header_t)) goto tooshort; /* did we capture enough for fully decoding the tlv header ? */ - ND_TCHECK_LEN(tptr, sizeof(struct tlv_header_t)); tlv_header = (const struct tlv_header_t *)tptr; tlv_type = GET_U_1(tlv_header->type); tlv_len = GET_U_1(tlv_header->length); @@ -411,7 +409,7 @@ slow_marker_lacp_print(netdissect_options *ndo, ND_PRINT("\n\t System %s, System Priority %u, Key %u" ", Port %u, Port Priority %u\n\t State Flags [%s]", - GET_ETHERADDR_STRING(tlv_ptr.lacp_tlv_actor_partner_info->sys), + GET_MAC48_STRING(tlv_ptr.lacp_tlv_actor_partner_info->sys), GET_BE_U_2(tlv_ptr.lacp_tlv_actor_partner_info->sys_pri), GET_BE_U_2(tlv_ptr.lacp_tlv_actor_partner_info->key), GET_BE_U_2(tlv_ptr.lacp_tlv_actor_partner_info->port), @@ -448,7 +446,7 @@ slow_marker_lacp_print(netdissect_options *ndo, tlv_ptr.marker_tlv_marker_info = (const struct marker_tlv_marker_info_t *)tlv_tptr; ND_PRINT("\n\t Request System %s, Request Port %u, Request Transaction ID 0x%08x", - GET_ETHERADDR_STRING(tlv_ptr.marker_tlv_marker_info->req_sys), + GET_MAC48_STRING(tlv_ptr.marker_tlv_marker_info->req_sys), GET_BE_U_2(tlv_ptr.marker_tlv_marker_info->req_port), GET_BE_U_4(tlv_ptr.marker_tlv_marker_info->req_trans_id)); @@ -474,10 +472,6 @@ slow_marker_lacp_print(netdissect_options *ndo, tooshort: ND_PRINT("\n\t\t packet is too short"); - return; - -trunc: - nd_print_trunc(ndo); } static void @@ -529,7 +523,7 @@ slow_oam_print(netdissect_options *ndo, switch (code) { case SLOW_OAM_CODE_INFO: - while (tlen > 0) { + while (tlen != 0) { ptr.slow_oam_tlv_header = (const struct slow_oam_tlv_header_t *)tptr; if (tlen < sizeof(*ptr.slow_oam_tlv_header)) goto tooshort; @@ -626,11 +620,10 @@ slow_oam_print(netdissect_options *ndo, tptr += 2; /* TLVs */ - while (tlen > 0) { + while (tlen != 0) { ptr.slow_oam_tlv_header = (const struct slow_oam_tlv_header_t *)tptr; if (tlen < sizeof(*ptr.slow_oam_tlv_header)) goto tooshort; - ND_TCHECK_SIZE(ptr.slow_oam_tlv_header); type = GET_U_1(ptr.slow_oam_tlv_header->type); length = GET_U_1(ptr.slow_oam_tlv_header->length); ND_PRINT("\n\t %s Link Event Type (%u), length %u", @@ -712,7 +705,6 @@ slow_oam_print(netdissect_options *ndo, tlv.slow_oam_loopbackctrl = (const struct slow_oam_loopbackctrl_t *)tptr; if (tlen < sizeof(*tlv.slow_oam_loopbackctrl)) goto tooshort; - ND_TCHECK_SIZE(tlv.slow_oam_loopbackctrl); command = GET_U_1(tlv.slow_oam_loopbackctrl->command); ND_PRINT("\n\t Command %s (%u)", tok2str(slow_oam_loopbackctrl_cmd_values, @@ -740,8 +732,4 @@ slow_oam_print(netdissect_options *ndo, tooshort: ND_PRINT("\n\t\t packet is too short"); - return; - -trunc: - nd_print_trunc(ndo); }