diff options
Diffstat (limited to 'contrib/tcpdump/print-mpls.c')
| -rw-r--r-- | contrib/tcpdump/print-mpls.c | 58 | 
1 files changed, 23 insertions, 35 deletions
| diff --git a/contrib/tcpdump/print-mpls.c b/contrib/tcpdump/print-mpls.c index d97cce5278b4..039781ada2d1 100644 --- a/contrib/tcpdump/print-mpls.c +++ b/contrib/tcpdump/print-mpls.c @@ -26,22 +26,13 @@   * SUCH DAMAGE.   */ -#ifndef lint -static const char rcsid[] _U_ = -    "@(#) $Header: /tcpdump/master/tcpdump/print-mpls.c,v 1.14 2005-07-05 09:38:19 hannes Exp $ (LBL)"; -#endif - +#define NETDISSECT_REWORKED  #ifdef HAVE_CONFIG_H  #include "config.h"  #endif  #include <tcpdump-stdinc.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "addrtoname.h"  #include "interface.h"  #include "extract.h"			/* must come after interface.h */  #include "mpls.h" @@ -65,29 +56,29 @@ 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; -	u_int16_t label_stack_depth = 0; +	uint32_t label_entry; +	uint16_t label_stack_depth = 0;  	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)); @@ -147,7 +138,7 @@ mpls_print(const u_char *bp, u_int length)  		case 0x4f:  			pt = PT_IPV4;  			break; -				 +  		case 0x60:  		case 0x61:  		case 0x62: @@ -183,30 +174,27 @@ 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) +			ND_DEFAULTPRINT(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;  	case PT_OSI: -		isoclns_print(p, length - (p - bp), length - (p - bp)); +		isoclns_print(ndo, p, length - (p - bp), length - (p - bp));  		break;  	default: @@ -215,7 +203,7 @@ mpls_print(const u_char *bp, u_int length)  	return;  trunc: -	printf("[|MPLS]"); +	ND_PRINT((ndo, "[|MPLS]"));  } | 
