diff options
Diffstat (limited to 'print-mpls.c')
-rw-r--r-- | print-mpls.c | 43 |
1 files changed, 18 insertions, 25 deletions
diff --git a/print-mpls.c b/print-mpls.c index 8862e4b0..cd323ce2 100644 --- a/print-mpls.c +++ b/print-mpls.c @@ -32,10 +32,6 @@ #include <tcpdump-stdinc.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - #include "interface.h" #include "extract.h" /* must come after interface.h */ #include "mpls.h" @@ -59,7 +55,7 @@ enum mpls_packet_type { * RFC3032: MPLS label stack encoding */ void -mpls_print(const u_char *bp, u_int length) +mpls_print(netdissect_options *ndo, const u_char *bp, u_int length) { const u_char *p; u_int32_t label_entry; @@ -67,21 +63,21 @@ mpls_print(const u_char *bp, u_int length) enum mpls_packet_type pt = PT_UNKNOWN; p = bp; - printf("MPLS"); + ND_PRINT((ndo, "MPLS")); do { - TCHECK2(*p, sizeof(label_entry)); + ND_TCHECK2(*p, sizeof(label_entry)); label_entry = EXTRACT_32BITS(p); - printf("%s(label %u", - (label_stack_depth && vflag) ? "\n\t" : " ", - MPLS_LABEL(label_entry)); + ND_PRINT((ndo, "%s(label %u", + (label_stack_depth && ndo->ndo_vflag) ? "\n\t" : " ", + MPLS_LABEL(label_entry))); label_stack_depth++; - if (vflag && + if (ndo->ndo_vflag && MPLS_LABEL(label_entry) < sizeof(mpls_labelname) / sizeof(mpls_labelname[0])) - printf(" (%s)", mpls_labelname[MPLS_LABEL(label_entry)]); - printf(", exp %u", MPLS_EXP(label_entry)); + ND_PRINT((ndo, " (%s)", mpls_labelname[MPLS_LABEL(label_entry)])); + ND_PRINT((ndo, ", exp %u", MPLS_EXP(label_entry))); if (MPLS_STACK(label_entry)) - printf(", [S]"); - printf(", ttl %u)", MPLS_TTL(label_entry)); + ND_PRINT((ndo, ", [S]")); + ND_PRINT((ndo, ", ttl %u)", MPLS_TTL(label_entry))); p += sizeof(label_entry); } while (!MPLS_STACK(label_entry)); @@ -177,25 +173,22 @@ mpls_print(const u_char *bp, u_int length) * Print the payload. */ if (pt == PT_UNKNOWN) { - if (!suppress_default_print) - default_print(p, length - (p - bp)); + if (!ndo->ndo_suppress_default_print) + ndo->ndo_default_print(ndo, p, length - (p - bp)); return; } - if (vflag) - printf("\n\t"); - else - printf(" "); + ND_PRINT((ndo, ndo->ndo_vflag ? "\n\t" : " ")); switch (pt) { case PT_IPV4: - ip_print(gndo, p, length - (p - bp)); + ip_print(ndo, p, length - (p - bp)); break; case PT_IPV6: #ifdef INET6 - ip6_print(gndo, p, length - (p - bp)); + ip6_print(ndo, p, length - (p - bp)); #else - printf("IPv6, length: %u", length); + ND_PRINT((ndo, "IPv6, length: %u", length)); #endif break; @@ -209,7 +202,7 @@ mpls_print(const u_char *bp, u_int length) return; trunc: - printf("[|MPLS]"); + ND_PRINT((ndo, "[|MPLS]")); } |