aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/netxray.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2002-05-04 10:00:18 +0000
committerGuy Harris <guy@alum.mit.edu>2002-05-04 10:00:18 +0000
commit82f364ab1ab3bdfc58ebd9741b384f01ba606e68 (patch)
treedeaf27215a0e8f4e1f0be469515d5e28a18a8d00 /wiretap/netxray.c
parent2be776e06c1df4d54dd5076760ee34b031cc8e8d (diff)
Fix capture-file-specific "close output" routines to check whether the
"err" argument is null and return an error code through that argument only if it isn't, to match what "wtap_dump_close()", which calls those routines, does. Put the NetXRay dump routines in order by version number. svn path=/trunk/; revision=5385
Diffstat (limited to 'wiretap/netxray.c')
-rw-r--r--wiretap/netxray.c104
1 files changed, 55 insertions, 49 deletions
diff --git a/wiretap/netxray.c b/wiretap/netxray.c
index 572e950163..143ced8cc9 100644
--- a/wiretap/netxray.c
+++ b/wiretap/netxray.c
@@ -1,6 +1,6 @@
/* netxray.c
*
- * $Id: netxray.c,v 1.53 2002/04/18 21:35:57 guy Exp $
+ * $Id: netxray.c,v 1.54 2002/05/04 10:00:18 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
@@ -124,15 +124,14 @@ static void netxray_set_pseudo_header(wtap *wth,
static gboolean netxray_read_rec_data(FILE_T fh, guint8 *data_ptr,
guint32 packet_size, int *err);
static void netxray_close(wtap *wth);
-static gboolean netxray_dump_2_0(wtap_dumper *wdh, const struct
- wtap_pkthdr *phdr, const union
- wtap_pseudo_header *pseudo_header,
- const u_char *pd, int *err); static
-gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err); static
-gboolean netxray_dump_1_1(wtap_dumper *wdh, const struct wtap_pkthdr
- *phdr, const union wtap_pseudo_header
- *pseudo_header, const u_char *pd, int *err);
+static gboolean netxray_dump_1_1(wtap_dumper *wdh,
+ const struct wtap_pkthdr *phdr,
+ const union wtap_pseudo_header *pseudo_header, const u_char *pd, int *err);
static gboolean netxray_dump_close_1_1(wtap_dumper *wdh, int *err);
+static gboolean netxray_dump_2_0(wtap_dumper *wdh,
+ const struct wtap_pkthdr *phdr,
+ const union wtap_pseudo_header *pseudo_header, const u_char *pd, int *err);
+static gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err);
int netxray_open(wtap *wth, int *err)
{
@@ -506,11 +505,11 @@ int netxray_dump_can_write_encap(int encap)
/* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on
failure */
-gboolean netxray_dump_open_2_0(wtap_dumper *wdh, int *err)
+gboolean netxray_dump_open_1_1(wtap_dumper *wdh, int *err)
{
/* This is a netxray file */
- wdh->subtype_write = netxray_dump_2_0;
- wdh->subtype_close = netxray_dump_close_2_0;
+ wdh->subtype_write = netxray_dump_1_1;
+ wdh->subtype_close = netxray_dump_close_1_1;
/* We can't fill in all the fields in the file header, as we
haven't yet written any packets. As we'll have to rewrite
@@ -532,14 +531,14 @@ gboolean netxray_dump_open_2_0(wtap_dumper *wdh, int *err)
/* Write a record for a packet to a dump file.
Returns TRUE on success, FALSE on failure. */
-static gboolean netxray_dump_2_0(wtap_dumper *wdh,
+static gboolean netxray_dump_1_1(wtap_dumper *wdh,
const struct wtap_pkthdr *phdr,
const union wtap_pseudo_header *pseudo_header _U_,
const u_char *pd, int *err)
{
netxray_dump_t *netxray = wdh->dump.netxray;
guint32 timestamp;
- struct netxrayrec_2_x_hdr rec_hdr;
+ struct netxrayrec_1_x_hdr rec_hdr;
size_t nwritten;
/* NetXRay/Windows Sniffer files have a capture start date/time
@@ -565,14 +564,7 @@ static gboolean netxray_dump_2_0(wtap_dumper *wdh,
rec_hdr.timehi = htolel(0);
rec_hdr.orig_len = htoles(phdr->len);
rec_hdr.incl_len = htoles(phdr->caplen);
-
- if (phdr->pkt_encap == WTAP_ENCAP_IEEE_802_11_WITH_RADIO)
- {
- rec_hdr.xxx[12] = pseudo_header->ieee_802_11.channel;
- rec_hdr.xxx[13] = pseudo_header->ieee_802_11.data_rate;
- rec_hdr.xxx[14] = pseudo_header->ieee_802_11.signal_level;
- }
-
+
nwritten = fwrite(&rec_hdr, 1, sizeof(rec_hdr), wdh->fh);
if (nwritten != sizeof(rec_hdr)) {
if (nwritten == 0 && ferror(wdh->fh))
@@ -599,7 +591,7 @@ static gboolean netxray_dump_2_0(wtap_dumper *wdh,
/* Finish writing to a dump file.
Returns TRUE on success, FALSE on failure. */
-static gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err)
+static gboolean netxray_dump_close_1_1(wtap_dumper *wdh, int *err)
{
char hdr_buf[CAPTUREFILE_HEADER_SIZE - sizeof(netxray_magic)];
netxray_dump_t *netxray = wdh->dump.netxray;
@@ -615,16 +607,18 @@ static gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err)
/* Rewrite the file header. */
nwritten = fwrite(netxray_magic, 1, sizeof netxray_magic, wdh->fh);
if (nwritten != sizeof netxray_magic) {
- if (nwritten == 0 && ferror(wdh->fh))
- *err = errno;
- else
- *err = WTAP_ERR_SHORT_WRITE;
+ if (err != NULL) {
+ if (nwritten == 0 && ferror(wdh->fh))
+ *err = errno;
+ else
+ *err = WTAP_ERR_SHORT_WRITE;
+ }
return FALSE;
}
/* "sniffer" version ? */
memset(&file_hdr, '\0', sizeof file_hdr);
- memcpy(file_hdr.version, vers_2_001, sizeof vers_2_001);
+ memcpy(file_hdr.version, vers_1_1, sizeof vers_1_1);
file_hdr.start_time = htolel(netxray->start.tv_sec);
file_hdr.nframes = htolel(netxray->nframes);
file_hdr.start_offset = htolel(CAPTUREFILE_HEADER_SIZE);
@@ -637,10 +631,12 @@ static gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err)
memcpy(hdr_buf, &file_hdr, sizeof(file_hdr));
nwritten = fwrite(hdr_buf, 1, sizeof hdr_buf, wdh->fh);
if (nwritten != sizeof hdr_buf) {
- if (nwritten == 0 && ferror(wdh->fh))
- *err = errno;
- else
- *err = WTAP_ERR_SHORT_WRITE;
+ if (err != NULL) {
+ if (nwritten == 0 && ferror(wdh->fh))
+ *err = errno;
+ else
+ *err = WTAP_ERR_SHORT_WRITE;
+ }
return FALSE;
}
@@ -649,11 +645,11 @@ static gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err)
/* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on
failure */
-gboolean netxray_dump_open_1_1(wtap_dumper *wdh, int *err)
+gboolean netxray_dump_open_2_0(wtap_dumper *wdh, int *err)
{
/* This is a netxray file */
- wdh->subtype_write = netxray_dump_1_1;
- wdh->subtype_close = netxray_dump_close_1_1;
+ wdh->subtype_write = netxray_dump_2_0;
+ wdh->subtype_close = netxray_dump_close_2_0;
/* We can't fill in all the fields in the file header, as we
haven't yet written any packets. As we'll have to rewrite
@@ -675,14 +671,14 @@ gboolean netxray_dump_open_1_1(wtap_dumper *wdh, int *err)
/* Write a record for a packet to a dump file.
Returns TRUE on success, FALSE on failure. */
-static gboolean netxray_dump_1_1(wtap_dumper *wdh,
+static gboolean netxray_dump_2_0(wtap_dumper *wdh,
const struct wtap_pkthdr *phdr,
const union wtap_pseudo_header *pseudo_header _U_,
const u_char *pd, int *err)
{
netxray_dump_t *netxray = wdh->dump.netxray;
guint32 timestamp;
- struct netxrayrec_1_x_hdr rec_hdr;
+ struct netxrayrec_2_x_hdr rec_hdr;
size_t nwritten;
/* NetXRay/Windows Sniffer files have a capture start date/time
@@ -708,7 +704,14 @@ static gboolean netxray_dump_1_1(wtap_dumper *wdh,
rec_hdr.timehi = htolel(0);
rec_hdr.orig_len = htoles(phdr->len);
rec_hdr.incl_len = htoles(phdr->caplen);
-
+
+ if (phdr->pkt_encap == WTAP_ENCAP_IEEE_802_11_WITH_RADIO)
+ {
+ rec_hdr.xxx[12] = pseudo_header->ieee_802_11.channel;
+ rec_hdr.xxx[13] = pseudo_header->ieee_802_11.data_rate;
+ rec_hdr.xxx[14] = pseudo_header->ieee_802_11.signal_level;
+ }
+
nwritten = fwrite(&rec_hdr, 1, sizeof(rec_hdr), wdh->fh);
if (nwritten != sizeof(rec_hdr)) {
if (nwritten == 0 && ferror(wdh->fh))
@@ -735,7 +738,7 @@ static gboolean netxray_dump_1_1(wtap_dumper *wdh,
/* Finish writing to a dump file.
Returns TRUE on success, FALSE on failure. */
-static gboolean netxray_dump_close_1_1(wtap_dumper *wdh, int *err)
+static gboolean netxray_dump_close_2_0(wtap_dumper *wdh, int *err)
{
char hdr_buf[CAPTUREFILE_HEADER_SIZE - sizeof(netxray_magic)];
netxray_dump_t *netxray = wdh->dump.netxray;
@@ -751,16 +754,18 @@ static gboolean netxray_dump_close_1_1(wtap_dumper *wdh, int *err)
/* Rewrite the file header. */
nwritten = fwrite(netxray_magic, 1, sizeof netxray_magic, wdh->fh);
if (nwritten != sizeof netxray_magic) {
- if (nwritten == 0 && ferror(wdh->fh))
- *err = errno;
- else
- *err = WTAP_ERR_SHORT_WRITE;
+ if (err != NULL) {
+ if (nwritten == 0 && ferror(wdh->fh))
+ *err = errno;
+ else
+ *err = WTAP_ERR_SHORT_WRITE;
+ }
return FALSE;
}
/* "sniffer" version ? */
memset(&file_hdr, '\0', sizeof file_hdr);
- memcpy(file_hdr.version, vers_1_1, sizeof vers_1_1);
+ memcpy(file_hdr.version, vers_2_001, sizeof vers_2_001);
file_hdr.start_time = htolel(netxray->start.tv_sec);
file_hdr.nframes = htolel(netxray->nframes);
file_hdr.start_offset = htolel(CAPTUREFILE_HEADER_SIZE);
@@ -773,13 +778,14 @@ static gboolean netxray_dump_close_1_1(wtap_dumper *wdh, int *err)
memcpy(hdr_buf, &file_hdr, sizeof(file_hdr));
nwritten = fwrite(hdr_buf, 1, sizeof hdr_buf, wdh->fh);
if (nwritten != sizeof hdr_buf) {
- if (nwritten == 0 && ferror(wdh->fh))
- *err = errno;
- else
- *err = WTAP_ERR_SHORT_WRITE;
+ if (err != NULL) {
+ if (nwritten == 0 && ferror(wdh->fh))
+ *err = errno;
+ else
+ *err = WTAP_ERR_SHORT_WRITE;
+ }
return FALSE;
}
return TRUE;
}
-