X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/513f782ae18791f0c925b9235da749b38159b607..1a1ac1d6947a7d2f1f50f45c21d8851d0af66575:/print-nsh.c diff --git a/print-nsh.c b/print-nsh.c index 1e39bc2e..17d62569 100644 --- a/print-nsh.c +++ b/print-nsh.c @@ -26,7 +26,7 @@ /* specification: draft-ietf-sfc-nsh-01 */ #ifdef HAVE_CONFIG_H -#include "config.h" +#include #endif #include "netdissect-stdinc.h" @@ -34,7 +34,6 @@ #include "netdissect.h" #include "extract.h" -static const char tstr[] = " [|NSH]"; static const struct tok nsh_flags [] = { { 0x20, "O" }, { 0x10, "C" }, @@ -62,24 +61,25 @@ nsh_print(netdissect_options *ndo, const u_char *bp, u_int len) uint8_t tlv_len; u_int next_len; + ndo->ndo_protocol = "nsh"; /* print Base Header and Service Path Header */ if (len < NSH_BASE_HDR_LEN + NSH_SERVICE_PATH_HDR_LEN) goto trunc; ND_TCHECK_LEN(bp, NSH_BASE_HDR_LEN + NSH_SERVICE_PATH_HDR_LEN); - ver = (uint8_t)(EXTRACT_U_1(bp) >> 6); - flags = EXTRACT_U_1(bp); + ver = (uint8_t)(GET_U_1(bp) >> 6); + flags = GET_U_1(bp); bp += 1; - length = EXTRACT_U_1(bp); + length = GET_U_1(bp); bp += 1; - md_type = EXTRACT_U_1(bp); + md_type = GET_U_1(bp); bp += 1; - next_protocol = EXTRACT_U_1(bp); + next_protocol = GET_U_1(bp); bp += 1; - service_path_id = EXTRACT_BE_U_3(bp); + service_path_id = GET_BE_U_3(bp); bp += 3; - service_index = EXTRACT_U_1(bp); + service_index = GET_U_1(bp); bp += 1; ND_PRINT("NSH, "); @@ -117,7 +117,7 @@ nsh_print(netdissect_options *ndo, const u_char *bp, u_int len) if (ndo->ndo_vflag > 2) { if (md_type == 0x01) { for (n = 0; n < length - 2; n++) { - ctx = EXTRACT_BE_U_4(bp); + ctx = GET_BE_U_4(bp); bp += NSH_HDR_WORD_SIZE; ND_PRINT("\n Context[%02u]: 0x%08x", n, ctx); } @@ -125,11 +125,11 @@ nsh_print(netdissect_options *ndo, const u_char *bp, u_int len) else if (md_type == 0x02) { n = 0; while (n < length - 2) { - tlv_class = EXTRACT_BE_U_2(bp); + tlv_class = GET_BE_U_2(bp); bp += 2; - tlv_type = EXTRACT_U_1(bp); + tlv_type = GET_U_1(bp); bp += 1; - tlv_len = EXTRACT_U_1(bp); + tlv_len = GET_U_1(bp); bp += 1; ND_PRINT("\n TLV Class %u, Type %u, Len %u", @@ -143,7 +143,7 @@ nsh_print(netdissect_options *ndo, const u_char *bp, u_int len) } for (vn = 0; vn < tlv_len; vn++) { - ctx = EXTRACT_BE_U_4(bp); + ctx = GET_BE_U_4(bp); bp += NSH_HDR_WORD_SIZE; ND_PRINT("\n Value[%02u]: 0x%08x", vn, ctx); } @@ -170,7 +170,7 @@ nsh_print(netdissect_options *ndo, const u_char *bp, u_int len) ip6_print(ndo, bp, next_len); break; case 0x3: - ether_print(ndo, bp, next_len, ndo->ndo_snapend - bp, NULL, NULL); + ether_print(ndo, bp, next_len, ND_BYTES_AVAILABLE_AFTER(bp), NULL, NULL); break; default: ND_PRINT("ERROR: unknown-next-protocol"); @@ -180,6 +180,6 @@ nsh_print(netdissect_options *ndo, const u_char *bp, u_int len) return; trunc: - ND_PRINT("%s", tstr); + nd_print_trunc(ndo); }