aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--wiretap/netmon.c71
-rw-r--r--wiretap/netxray.c104
-rw-r--r--wiretap/ngsniffer.c12
-rw-r--r--wiretap/visual.c37
4 files changed, 124 insertions, 100 deletions
diff --git a/wiretap/netmon.c b/wiretap/netmon.c
index b40f9f8cab..6df2312e64 100644
--- a/wiretap/netmon.c
+++ b/wiretap/netmon.c
@@ -1,6 +1,6 @@
/* netmon.c
*
- * $Id: netmon.c,v 1.53 2002/04/30 09:21:41 guy Exp $
+ * $Id: netmon.c,v 1.54 2002/05/04 10:00:18 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
@@ -748,10 +748,12 @@ static gboolean netmon_dump_close(wtap_dumper *wdh, int *err)
n_to_write = netmon->frame_table_index * sizeof *netmon->frame_table;
nwritten = fwrite(netmon->frame_table, 1, n_to_write, wdh->fh);
if (nwritten != n_to_write) {
- 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;
}
@@ -779,48 +781,53 @@ static gboolean netmon_dump_close(wtap_dumper *wdh, int *err)
default:
/* We should never get here - our open routine
should only get called for the types above. */
- *err = WTAP_ERR_UNSUPPORTED_FILE_TYPE;
+ if (err != NULL)
+ *err = WTAP_ERR_UNSUPPORTED_FILE_TYPE;
return FALSE;
}
nwritten = fwrite(magicp, 1, magic_size, wdh->fh);
if (nwritten != magic_size) {
- 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;
}
file_hdr.network = htoles(wtap_encap[wdh->encap]);
tm = localtime(&netmon->first_record_time.tv_sec);
- if (tm != NULL) {
- file_hdr.ts_year = htoles(1900 + tm->tm_year);
- file_hdr.ts_month = htoles(tm->tm_mon + 1);
- file_hdr.ts_dow = htoles(tm->tm_wday);
- file_hdr.ts_day = htoles(tm->tm_mday);
- file_hdr.ts_hour = htoles(tm->tm_hour);
- file_hdr.ts_min = htoles(tm->tm_min);
- file_hdr.ts_sec = htoles(tm->tm_sec);
- } else {
- file_hdr.ts_year = htoles(1900 + 0);
- file_hdr.ts_month = htoles(0 + 1);
- file_hdr.ts_dow = htoles(0);
- file_hdr.ts_day = htoles(0);
- file_hdr.ts_hour = htoles(0);
- file_hdr.ts_min = htoles(0);
- file_hdr.ts_sec = htoles(0);
- }
- file_hdr.ts_msec = htoles(netmon->first_record_time.tv_usec/1000);
+ if (tm != NULL) {
+ file_hdr.ts_year = htoles(1900 + tm->tm_year);
+ file_hdr.ts_month = htoles(tm->tm_mon + 1);
+ file_hdr.ts_dow = htoles(tm->tm_wday);
+ file_hdr.ts_day = htoles(tm->tm_mday);
+ file_hdr.ts_hour = htoles(tm->tm_hour);
+ file_hdr.ts_min = htoles(tm->tm_min);
+ file_hdr.ts_sec = htoles(tm->tm_sec);
+ } else {
+ file_hdr.ts_year = htoles(1900 + 0);
+ file_hdr.ts_month = htoles(0 + 1);
+ file_hdr.ts_dow = htoles(0);
+ file_hdr.ts_day = htoles(0);
+ file_hdr.ts_hour = htoles(0);
+ file_hdr.ts_min = htoles(0);
+ file_hdr.ts_sec = htoles(0);
+ }
+ file_hdr.ts_msec = htoles(netmon->first_record_time.tv_usec/1000);
/* XXX - what about rounding? */
file_hdr.frametableoffset = htolel(netmon->frame_table_offset);
file_hdr.frametablelength =
htolel(netmon->frame_table_index * sizeof *netmon->frame_table);
nwritten = fwrite(&file_hdr, 1, sizeof file_hdr, wdh->fh);
if (nwritten != sizeof file_hdr) {
- 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;
}
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;
}
-
diff --git a/wiretap/ngsniffer.c b/wiretap/ngsniffer.c
index 8758fb8d9e..2caef77d0a 100644
--- a/wiretap/ngsniffer.c
+++ b/wiretap/ngsniffer.c
@@ -1,6 +1,6 @@
/* ngsniffer.c
*
- * $Id: ngsniffer.c,v 1.79 2002/04/30 08:48:27 guy Exp $
+ * $Id: ngsniffer.c,v 1.80 2002/05/04 10:00:18 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
@@ -1559,10 +1559,12 @@ static gboolean ngsniffer_dump_close(wtap_dumper *wdh, int *err)
nwritten = fwrite(buf, 1, 6, wdh->fh);
if (nwritten != 6) {
- 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;
diff --git a/wiretap/visual.c b/wiretap/visual.c
index 100441ae7a..7e1baf8e90 100644
--- a/wiretap/visual.c
+++ b/wiretap/visual.c
@@ -2,7 +2,7 @@
* File read and write routines for Visual Networks cap files.
* Copyright (c) 2001, Tom Nisbet tnisbet@visualnetworks.com
*
- * $Id: visual.c,v 1.6 2002/04/09 08:15:04 guy Exp $
+ * $Id: visual.c,v 1.7 2002/05/04 10:00:18 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
@@ -120,7 +120,7 @@ static gboolean visual_seek_read(wtap *wth, long seek_off,
static gboolean visual_dump(wtap_dumper *wdh, const struct wtap_pkthdr *phdr,
const union wtap_pseudo_header *pseudo_header, const u_char *pd, int *err);
static gboolean visual_dump_close(wtap_dumper *wdh, int *err);
-static void visual_dump_free();
+static void visual_dump_free(wtap_dumper *wdh);
/* Open a file for reading */
@@ -594,10 +594,13 @@ static gboolean visual_dump_close(wtap_dumper *wdh, int *err)
nwritten = fwrite(visual->index_table, 1, n_to_write, wdh->fh);
if (nwritten != n_to_write)
{
- 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;
+ }
visual_dump_free(wdh);
return FALSE;
}
@@ -610,10 +613,13 @@ static gboolean visual_dump_close(wtap_dumper *wdh, int *err)
nwritten = fwrite(magicp, 1, magic_size, wdh->fh);
if (nwritten != magic_size)
{
- 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;
+ }
visual_dump_free(wdh);
return FALSE;
}
@@ -643,10 +649,13 @@ static gboolean visual_dump_close(wtap_dumper *wdh, int *err)
nwritten = fwrite(&vfile_hdr, 1, sizeof vfile_hdr, wdh->fh);
if (nwritten != sizeof vfile_hdr)
{
- 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;
+ }
visual_dump_free(wdh);
return FALSE;
}