summaryrefslogtreecommitdiffstats
path: root/contrib/tcpdump/print-ppi.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2015-01-07 19:55:18 +0000
committerdelphij <delphij@FreeBSD.org>2015-01-07 19:55:18 +0000
commitf49c5d523af9076a4a59e8dd664f9a897108432e (patch)
treee268839e08c106e178b33bd461d8d0a9c6fb5ad9 /contrib/tcpdump/print-ppi.c
parentc371846049d370ab78d943e60e789cdffe0aad3d (diff)
parent08263d19579d35a7a65e0c8bcb768504ce76d04e (diff)
downloadFreeBSD-src-f49c5d523af9076a4a59e8dd664f9a897108432e.zip
FreeBSD-src-f49c5d523af9076a4a59e8dd664f9a897108432e.tar.gz
MFV r276761: tcpdump 4.6.2.
MFC after: 1 month
Diffstat (limited to 'contrib/tcpdump/print-ppi.c')
-rw-r--r--contrib/tcpdump/print-ppi.c35
1 files changed, 20 insertions, 15 deletions
diff --git a/contrib/tcpdump/print-ppi.c b/contrib/tcpdump/print-ppi.c
index 38873c8..2cff56c 100644
--- a/contrib/tcpdump/print-ppi.c
+++ b/contrib/tcpdump/print-ppi.c
@@ -1,33 +1,38 @@
/*
* Oracle
*/
+#define NETDISSECT_REWORKED
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <tcpdump-stdinc.h>
-#include <stdio.h>
-#include <pcap.h>
-
-#include "netdissect.h"
#include "interface.h"
#include "extract.h"
-#include "ppi.h"
+
+typedef struct ppi_header {
+ uint8_t ppi_ver;
+ uint8_t ppi_flags;
+ uint16_t ppi_len;
+ uint32_t ppi_dlt;
+} ppi_header_t;
+
+#define PPI_HDRLEN 8
#ifdef DLT_PPI
static inline void
-ppi_header_print(struct netdissect_options *ndo, const u_char *bp, u_int length)
+ppi_header_print(netdissect_options *ndo, const u_char *bp, u_int length)
{
const ppi_header_t *hdr;
- u_int32_t dlt;
- u_int16_t len;
+ uint32_t dlt;
+ uint16_t len;
hdr = (const ppi_header_t *)bp;
- len = EXTRACT_16BITS(&hdr->ppi_len);
- dlt = EXTRACT_32BITS(&hdr->ppi_dlt);
+ len = EXTRACT_LE_16BITS(&hdr->ppi_len);
+ dlt = EXTRACT_LE_32BITS(&hdr->ppi_dlt);
if (!ndo->ndo_qflag) {
ND_PRINT((ndo,", V.%d DLT %s (%d) len %d", hdr->ppi_ver,
@@ -41,7 +46,7 @@ ppi_header_print(struct netdissect_options *ndo, const u_char *bp, u_int length)
}
static void
-ppi_print(struct netdissect_options *ndo,
+ppi_print(netdissect_options *ndo,
const struct pcap_pkthdr *h, const u_char *p)
{
if_ndo_printer ndo_printer;
@@ -49,14 +54,14 @@ ppi_print(struct netdissect_options *ndo,
ppi_header_t *hdr;
u_int caplen = h->caplen;
u_int length = h->len;
- u_int32_t dlt;
+ uint32_t dlt;
if (caplen < sizeof(ppi_header_t)) {
ND_PRINT((ndo, "[|ppi]"));
return;
}
hdr = (ppi_header_t *)p;
- dlt = EXTRACT_32BITS(&hdr->ppi_dlt);
+ dlt = EXTRACT_LE_32BITS(&hdr->ppi_dlt);
if (ndo->ndo_eflag)
ppi_header_print(ndo, p, length);
@@ -75,7 +80,7 @@ ppi_print(struct netdissect_options *ndo,
length + sizeof(ppi_header_t));
if (!ndo->ndo_suppress_default_print)
- ndo->ndo_default_print(ndo, p, caplen);
+ ND_DEFAULTPRINT(p, caplen);
}
}
@@ -86,7 +91,7 @@ ppi_print(struct netdissect_options *ndo,
* is the number of bytes actually captured.
*/
u_int
-ppi_if_print(struct netdissect_options *ndo,
+ppi_if_print(netdissect_options *ndo,
const struct pcap_pkthdr *h, const u_char *p)
{
ppi_print(ndo, h, p);
OpenPOWER on IntegriCloud