aboutsummaryrefslogtreecommitdiff
path: root/contrib/tcpdump/print-dtp.c
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2015-01-07 19:55:18 +0000
committerXin LI <delphij@FreeBSD.org>2015-01-07 19:55:18 +0000
commit3c602fabf9b894ff79f08a80cbb7ad3b1eb84e62 (patch)
treee268839e08c106e178b33bd461d8d0a9c6fb5ad9 /contrib/tcpdump/print-dtp.c
parent61b3223976cc010f61cd50773dd8b9e06d123d9a (diff)
parente91eac244982a8728f370000c353b16e18174ec9 (diff)
downloadsrc-3c602fabf9b894ff79f08a80cbb7ad3b1eb84e62.tar.gz
src-3c602fabf9b894ff79f08a80cbb7ad3b1eb84e62.zip
MFV r276761: tcpdump 4.6.2.
MFC after: 1 month
Notes
Notes: svn path=/head/; revision=276788
Diffstat (limited to 'contrib/tcpdump/print-dtp.c')
-rw-r--r--contrib/tcpdump/print-dtp.c43
1 files changed, 19 insertions, 24 deletions
diff --git a/contrib/tcpdump/print-dtp.c b/contrib/tcpdump/print-dtp.c
index c358a8930743..5d84a770eeca 100644
--- a/contrib/tcpdump/print-dtp.c
+++ b/contrib/tcpdump/print-dtp.c
@@ -17,19 +17,16 @@
* Original code by Carles Kishimoto <carles.kishimoto@gmail.com>
*/
+#define NETDISSECT_REWORKED
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <tcpdump-stdinc.h>
-#include <stdio.h>
-#include <string.h>
-
#include "interface.h"
#include "addrtoname.h"
-#include "extract.h"
-#include "nlpid.h"
+#include "extract.h"
#define DTP_HEADER_LEN 1
#define DTP_DOMAIN_TLV 0x0001
@@ -37,7 +34,7 @@
#define DTP_DTP_TYPE_TLV 0x0003
#define DTP_NEIGHBOR_TLV 0x0004
-static struct tok dtp_tlv_values[] = {
+static const struct tok dtp_tlv_values[] = {
{ DTP_DOMAIN_TLV, "Domain TLV"},
{ DTP_STATUS_TLV, "Status TLV"},
{ DTP_DTP_TYPE_TLV, "DTP type TLV"},
@@ -46,7 +43,7 @@ static struct tok dtp_tlv_values[] = {
};
void
-dtp_print (const u_char *pptr, u_int length)
+dtp_print (netdissect_options *ndo, const u_char *pptr, u_int length)
{
int type, len;
const u_char *tptr;
@@ -54,19 +51,18 @@ dtp_print (const u_char *pptr, u_int length)
if (length < DTP_HEADER_LEN)
goto trunc;
- tptr = pptr;
+ tptr = pptr;
- if (!TTEST2(*tptr, DTP_HEADER_LEN))
- goto trunc;
+ ND_TCHECK2(*tptr, DTP_HEADER_LEN);
- printf("DTPv%u, length %u",
+ ND_PRINT((ndo, "DTPv%u, length %u",
(*tptr),
- length);
+ length));
/*
* In non-verbose mode, just print version.
*/
- if (vflag < 1) {
+ if (ndo->ndo_vflag < 1) {
return;
}
@@ -74,45 +70,44 @@ dtp_print (const u_char *pptr, u_int length)
while (tptr < (pptr+length)) {
- if (!TTEST2(*tptr, 4))
- goto trunc;
+ ND_TCHECK2(*tptr, 4);
type = EXTRACT_16BITS(tptr);
- len = EXTRACT_16BITS(tptr+2);
+ len = EXTRACT_16BITS(tptr+2);
/* infinite loop check */
if (type == 0 || len == 0) {
return;
}
- printf("\n\t%s (0x%04x) TLV, length %u",
+ ND_PRINT((ndo, "\n\t%s (0x%04x) TLV, length %u",
tok2str(dtp_tlv_values, "Unknown", type),
- type, len);
+ type, len));
switch (type) {
case DTP_DOMAIN_TLV:
- printf(", %s", tptr+4);
+ ND_PRINT((ndo, ", %s", tptr+4));
break;
- case DTP_STATUS_TLV:
+ case DTP_STATUS_TLV:
case DTP_DTP_TYPE_TLV:
- printf(", 0x%x", *(tptr+4));
+ ND_PRINT((ndo, ", 0x%x", *(tptr+4)));
break;
case DTP_NEIGHBOR_TLV:
- printf(", %s", etheraddr_string(tptr+4));
+ ND_PRINT((ndo, ", %s", etheraddr_string(ndo, tptr+4)));
break;
default:
break;
- }
+ }
tptr += len;
}
return;
trunc:
- printf("[|dtp]");
+ ND_PRINT((ndo, "[|dtp]"));
}
/*