aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap
diff options
context:
space:
mode:
Diffstat (limited to 'wiretap')
-rw-r--r--wiretap/5views.c2
-rw-r--r--wiretap/aethra.c2
-rw-r--r--wiretap/ascendtext.c2
-rw-r--r--wiretap/ber.c2
-rw-r--r--wiretap/btsnoop.c6
-rw-r--r--wiretap/camins.c2
-rw-r--r--wiretap/catapult_dct2000.c2
-rw-r--r--wiretap/commview.c2
-rw-r--r--wiretap/cosine.c2
-rw-r--r--wiretap/csids.c2
-rw-r--r--wiretap/daintree-sna.c2
-rw-r--r--wiretap/dbs-etherwatch.c2
-rw-r--r--wiretap/dct3trace.c2
-rw-r--r--wiretap/erf.c4
-rw-r--r--wiretap/eyesdn.c2
-rw-r--r--wiretap/file_access.c2
-rw-r--r--wiretap/hcidump.c2
-rw-r--r--wiretap/i4btrace.c2
-rw-r--r--wiretap/ipfix.c2
-rw-r--r--wiretap/iptrace.c4
-rw-r--r--wiretap/iseries.c4
-rw-r--r--wiretap/k12.c2
-rw-r--r--wiretap/k12text.l2
-rw-r--r--wiretap/lanalyzer.c2
-rw-r--r--wiretap/libpcap.c26
-rw-r--r--wiretap/logcat.c4
-rw-r--r--wiretap/logcat_text.c2
-rw-r--r--wiretap/mime_file.c2
-rw-r--r--wiretap/mp2t.c2
-rw-r--r--wiretap/mpeg.c2
-rw-r--r--wiretap/netmon.c4
-rw-r--r--wiretap/netscaler.c2
-rw-r--r--wiretap/netscreen.c2
-rw-r--r--wiretap/nettl.c2
-rw-r--r--wiretap/network_instruments.c2
-rw-r--r--wiretap/netxray.c10
-rw-r--r--wiretap/ngsniffer.c2
-rw-r--r--wiretap/packetlogger.c2
-rw-r--r--wiretap/pcapng.c76
-rw-r--r--wiretap/peekclassic.c2
-rw-r--r--wiretap/peektagged.c2
-rw-r--r--wiretap/pppdump.c2
-rw-r--r--wiretap/radcom.c2
-rw-r--r--wiretap/snoop.c2
-rw-r--r--wiretap/stanag4607.c2
-rw-r--r--wiretap/tnef.c2
-rw-r--r--wiretap/toshiba.c2
-rw-r--r--wiretap/visual.c2
-rw-r--r--wiretap/vms.c2
-rw-r--r--wiretap/vwr.c2
-rw-r--r--wiretap/wtap-int.h16
-rw-r--r--wiretap/wtap.c7
-rw-r--r--wiretap/wtap.h20
53 files changed, 158 insertions, 105 deletions
diff --git a/wiretap/5views.c b/wiretap/5views.c
index 4db2d69d59..8576c726d8 100644
--- a/wiretap/5views.c
+++ b/wiretap/5views.c
@@ -185,7 +185,7 @@ int _5views_open(wtap *wth, int *err, gchar **err_info)
wth->subtype_seek_read = _5views_seek_read;
wth->file_encap = encap;
wth->snapshot_length = 0; /* not available in header */
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
return 1;
}
diff --git a/wiretap/aethra.c b/wiretap/aethra.c
index 2a91970fad..6eb37202b9 100644
--- a/wiretap/aethra.c
+++ b/wiretap/aethra.c
@@ -173,7 +173,7 @@ int aethra_open(wtap *wth, int *err, gchar **err_info)
*/
wth->file_encap = WTAP_ENCAP_ISDN;
wth->snapshot_length = 0; /* not available in header */
- wth->tsprecision = WTAP_FILE_TSPREC_MSEC;
+ wth->file_tsprec = WTAP_TSPREC_MSEC;
return 1;
}
diff --git a/wiretap/ascendtext.c b/wiretap/ascendtext.c
index 1e6f4fbbf8..008afd678f 100644
--- a/wiretap/ascendtext.c
+++ b/wiretap/ascendtext.c
@@ -217,7 +217,7 @@ int ascend_open(wtap *wth, int *err, gchar **err_info)
}
ascend->inittime = statbuf.st_ctime;
ascend->adjusted = FALSE;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
init_parse_ascend();
diff --git a/wiretap/ber.c b/wiretap/ber.c
index 4d015097ba..cb1829bda3 100644
--- a/wiretap/ber.c
+++ b/wiretap/ber.c
@@ -181,7 +181,7 @@ int ber_open(wtap *wth, int *err, gchar **err_info)
wth->subtype_read = ber_read;
wth->subtype_seek_read = ber_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_SEC;
+ wth->file_tsprec = WTAP_TSPREC_SEC;
return 1;
}
diff --git a/wiretap/btsnoop.c b/wiretap/btsnoop.c
index 6d3e75a2c6..fa0075b847 100644
--- a/wiretap/btsnoop.c
+++ b/wiretap/btsnoop.c
@@ -155,7 +155,7 @@ int btsnoop_open(wtap *wth, int *err, gchar **err_info)
wth->subtype_seek_read = btsnoop_seek_read;
wth->file_encap = file_encap;
wth->snapshot_length = 0; /* not available in header */
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
wth->file_type_subtype = WTAP_FILE_TYPE_SUBTYPE_BTSNOOP;
return 1;
}
@@ -420,7 +420,7 @@ gboolean btsnoop_dump_open_h1(wtap_dumper *wdh, int *err)
switch (wdh->file_type_subtype) {
case WTAP_FILE_TYPE_SUBTYPE_BTSNOOP:
- wdh->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wdh->tsprecision = WTAP_TSPREC_USEC;
break;
default:
@@ -462,7 +462,7 @@ gboolean btsnoop_dump_open_h4(wtap_dumper *wdh, int *err)
switch (wdh->file_type_subtype) {
case WTAP_FILE_TYPE_SUBTYPE_BTSNOOP:
- wdh->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wdh->tsprecision = WTAP_TSPREC_USEC;
break;
default:
diff --git a/wiretap/camins.c b/wiretap/camins.c
index faa516aeaa..d5aafe9fcc 100644
--- a/wiretap/camins.c
+++ b/wiretap/camins.c
@@ -348,7 +348,7 @@ int camins_open(wtap *wth, int *err, gchar **err_info _U_)
wth->file_encap = WTAP_ENCAP_DVBCI;
wth->snapshot_length = 0;
- wth->tsprecision = WTAP_FILE_TSPREC_MSEC;
+ wth->file_tsprec = WTAP_TSPREC_MSEC;
wth->priv = NULL;
diff --git a/wiretap/catapult_dct2000.c b/wiretap/catapult_dct2000.c
index a0555ddd1f..2b5ef4e51c 100644
--- a/wiretap/catapult_dct2000.c
+++ b/wiretap/catapult_dct2000.c
@@ -261,7 +261,7 @@ catapult_dct2000_open(wtap *wth, int *err, gchar **err_info)
wth->subtype_close = catapult_dct2000_close;
/* Choose microseconds (have 4 decimal places...) */
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
/***************************************************************/
diff --git a/wiretap/commview.c b/wiretap/commview.c
index 5a5f881a77..e0c24326d1 100644
--- a/wiretap/commview.c
+++ b/wiretap/commview.c
@@ -123,7 +123,7 @@ int commview_open(wtap *wth, int *err, gchar **err_info)
wth->file_type_subtype = WTAP_FILE_TYPE_SUBTYPE_COMMVIEW;
wth->file_encap = WTAP_ENCAP_PER_PACKET;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
return 1; /* Our kind of file */
}
diff --git a/wiretap/cosine.c b/wiretap/cosine.c
index fbf1c13842..d007c90820 100644
--- a/wiretap/cosine.c
+++ b/wiretap/cosine.c
@@ -280,7 +280,7 @@ int cosine_open(wtap *wth, int *err, gchar **err_info)
wth->snapshot_length = 0; /* not known */
wth->subtype_read = cosine_read;
wth->subtype_seek_read = cosine_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_CSEC;
+ wth->file_tsprec = WTAP_TSPREC_CSEC;
return 1;
}
diff --git a/wiretap/csids.c b/wiretap/csids.c
index 99dff7f2bb..e99e47b788 100644
--- a/wiretap/csids.c
+++ b/wiretap/csids.c
@@ -138,7 +138,7 @@ int csids_open(wtap *wth, int *err, gchar **err_info)
wth->snapshot_length = 0; /* not known */
wth->subtype_read = csids_read;
wth->subtype_seek_read = csids_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_SEC;
+ wth->file_tsprec = WTAP_TSPREC_SEC;
return 1;
}
diff --git a/wiretap/daintree-sna.c b/wiretap/daintree-sna.c
index 0b5ab67f85..672393dc95 100644
--- a/wiretap/daintree-sna.c
+++ b/wiretap/daintree-sna.c
@@ -126,7 +126,7 @@ int daintree_sna_open(wtap *wth, int *err, gchar **err_info)
/* set up for file type */
wth->file_type_subtype = WTAP_FILE_TYPE_SUBTYPE_DAINTREE_SNA;
wth->file_encap = WTAP_ENCAP_IEEE802_15_4_NOFCS;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
wth->snapshot_length = 0; /* not available in header */
return 1; /* it's a Daintree file */
diff --git a/wiretap/dbs-etherwatch.c b/wiretap/dbs-etherwatch.c
index fd6ca4a088..9e76a5da36 100644
--- a/wiretap/dbs-etherwatch.c
+++ b/wiretap/dbs-etherwatch.c
@@ -190,7 +190,7 @@ int dbs_etherwatch_open(wtap *wth, int *err, gchar **err_info)
wth->snapshot_length = 0; /* not known */
wth->subtype_read = dbs_etherwatch_read;
wth->subtype_seek_read = dbs_etherwatch_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_CSEC;
+ wth->file_tsprec = WTAP_TSPREC_CSEC;
return 1;
}
diff --git a/wiretap/dct3trace.c b/wiretap/dct3trace.c
index 5baaa69971..7ce51242ac 100644
--- a/wiretap/dct3trace.c
+++ b/wiretap/dct3trace.c
@@ -181,7 +181,7 @@ int dct3trace_open(wtap *wth, int *err, gchar **err_info)
wth->snapshot_length = 0; /* not known */
wth->subtype_read = dct3trace_read;
wth->subtype_seek_read = dct3trace_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_SEC;
+ wth->file_tsprec = WTAP_TSPREC_SEC;
return 1;
}
diff --git a/wiretap/erf.c b/wiretap/erf.c
index 0d47ee0f56..ede93d5a5b 100644
--- a/wiretap/erf.c
+++ b/wiretap/erf.c
@@ -272,7 +272,7 @@ extern int erf_open(wtap *wth, int *err, gchar **err_info)
wth->subtype_read = erf_read;
wth->subtype_seek_read = erf_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
erf_populate_interfaces(wth);
@@ -714,7 +714,7 @@ int erf_dump_open(wtap_dumper *wdh, int *err)
switch(wdh->file_type_subtype){
case WTAP_FILE_TYPE_SUBTYPE_ERF:
- wdh->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wdh->tsprecision = WTAP_TSPREC_NSEC;
break;
default:
*err = WTAP_ERR_UNSUPPORTED_FILE_TYPE;
diff --git a/wiretap/eyesdn.c b/wiretap/eyesdn.c
index ccf165c1fc..724400a1c8 100644
--- a/wiretap/eyesdn.c
+++ b/wiretap/eyesdn.c
@@ -143,7 +143,7 @@ int eyesdn_open(wtap *wth, int *err, gchar **err_info)
wth->snapshot_length = 0; /* not known */
wth->subtype_read = eyesdn_read;
wth->subtype_seek_read = eyesdn_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
return 1;
}
diff --git a/wiretap/file_access.c b/wiretap/file_access.c
index e7db8941c1..33640df1d1 100644
--- a/wiretap/file_access.c
+++ b/wiretap/file_access.c
@@ -824,7 +824,7 @@ wtap_open_offline(const char *filename, unsigned int type, int *err, char **err_
wth->file_encap = WTAP_ENCAP_UNKNOWN;
wth->subtype_sequential_close = NULL;
wth->subtype_close = NULL;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
wth->priv = NULL;
wth->wslua_data = NULL;
diff --git a/wiretap/hcidump.c b/wiretap/hcidump.c
index f2353be970..1a508968d9 100644
--- a/wiretap/hcidump.c
+++ b/wiretap/hcidump.c
@@ -128,7 +128,7 @@ int hcidump_open(wtap *wth, int *err, gchar **err_info)
wth->subtype_read = hcidump_read;
wth->subtype_seek_read = hcidump_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
return 1;
}
diff --git a/wiretap/i4btrace.c b/wiretap/i4btrace.c
index f4fea01fb0..d7fe2c7067 100644
--- a/wiretap/i4btrace.c
+++ b/wiretap/i4btrace.c
@@ -104,7 +104,7 @@ int i4btrace_open(wtap *wth, int *err, gchar **err_info)
i4btrace->byte_swapped = byte_swapped;
wth->file_encap = WTAP_ENCAP_ISDN;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
return 1;
}
diff --git a/wiretap/ipfix.c b/wiretap/ipfix.c
index 70b700d092..00466bea86 100644
--- a/wiretap/ipfix.c
+++ b/wiretap/ipfix.c
@@ -278,7 +278,7 @@ ipfix_open(wtap *wth, int *err, gchar **err_info)
/* all's good, this is a IPFIX file */
wth->file_encap = WTAP_ENCAP_RAW_IPFIX;
wth->snapshot_length = 0;
- wth->tsprecision = WTAP_FILE_TSPREC_SEC;
+ wth->file_tsprec = WTAP_TSPREC_SEC;
wth->subtype_read = ipfix_read;
wth->subtype_seek_read = ipfix_seek_read;
wth->subtype_close = ipfix_close;
diff --git a/wiretap/iptrace.c b/wiretap/iptrace.c
index 3bd06f24ce..71ea09a0ee 100644
--- a/wiretap/iptrace.c
+++ b/wiretap/iptrace.c
@@ -68,13 +68,13 @@ int iptrace_open(wtap *wth, int *err, gchar **err_info)
wth->file_type_subtype = WTAP_FILE_TYPE_SUBTYPE_IPTRACE_1_0;
wth->subtype_read = iptrace_read_1_0;
wth->subtype_seek_read = iptrace_seek_read_1_0;
- wth->tsprecision = WTAP_FILE_TSPREC_SEC;
+ wth->file_tsprec = WTAP_TSPREC_SEC;
}
else if (strcmp(name, "iptrace 2.0") == 0) {
wth->file_type_subtype = WTAP_FILE_TYPE_SUBTYPE_IPTRACE_2_0;
wth->subtype_read = iptrace_read_2_0;
wth->subtype_seek_read = iptrace_seek_read_2_0;
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
}
else {
return 0;
diff --git a/wiretap/iseries.c b/wiretap/iseries.c
index ba1dd628ec..09c4f6c30e 100644
--- a/wiretap/iseries.c
+++ b/wiretap/iseries.c
@@ -248,7 +248,7 @@ iseries_open (wtap * wth, int *err, gchar ** err_info)
wth->snapshot_length = 0;
wth->subtype_read = iseries_read;
wth->subtype_seek_read = iseries_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
if (file_seek (wth->fh, 0, SEEK_SET, err) == -1)
{
@@ -288,7 +288,7 @@ iseries_open (wtap * wth, int *err, gchar ** err_info)
wth->snapshot_length = 0;
wth->subtype_read = iseries_read;
wth->subtype_seek_read = iseries_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
if (file_seek (wth->fh, 0, SEEK_SET, err) == -1)
{
diff --git a/wiretap/k12.c b/wiretap/k12.c
index 068c968c76..79d62eac72 100644
--- a/wiretap/k12.c
+++ b/wiretap/k12.c
@@ -1001,7 +1001,7 @@ int k12_open(wtap *wth, int *err, gchar **err_info) {
wth->subtype_seek_read = k12_seek_read;
wth->subtype_close = k12_close;
wth->priv = (void *)file_data;
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
return 1;
}
diff --git a/wiretap/k12text.l b/wiretap/k12text.l
index 13f8d42439..b281dfe15f 100644
--- a/wiretap/k12text.l
+++ b/wiretap/k12text.l
@@ -343,7 +343,7 @@ k12text_open(wtap *wth, int *err, gchar **err_info _U_)
wth->snapshot_length = 0;
wth->subtype_read = k12text_read;
wth->subtype_seek_read = k12text_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
return 1;
}
diff --git a/wiretap/lanalyzer.c b/wiretap/lanalyzer.c
index 9fea6b34ea..5db1d2030c 100644
--- a/wiretap/lanalyzer.c
+++ b/wiretap/lanalyzer.c
@@ -345,7 +345,7 @@ int lanalyzer_open(wtap *wth, int *err, gchar **err_info)
wth->subtype_read = lanalyzer_read;
wth->subtype_seek_read = lanalyzer_seek_read;
wth->snapshot_length = 0;
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
/* Read records until we find the start of packets */
while (1) {
diff --git a/wiretap/libpcap.c b/wiretap/libpcap.c
index 75e52015fd..431c899516 100644
--- a/wiretap/libpcap.c
+++ b/wiretap/libpcap.c
@@ -122,7 +122,7 @@ int libpcap_open(wtap *wth, int *err, gchar **err_info)
a program using either standard or ss990417 libpcap. */
byte_swapped = FALSE;
modified = FALSE;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
break;
case PCAP_MODIFIED_MAGIC:
@@ -130,7 +130,7 @@ int libpcap_open(wtap *wth, int *err, gchar **err_info)
a program using either ss990915 or ss991029 libpcap. */
byte_swapped = FALSE;
modified = TRUE;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
break;
case PCAP_SWAPPED_MAGIC:
@@ -139,7 +139,7 @@ int libpcap_open(wtap *wth, int *err, gchar **err_info)
ss990417 libpcap. */
byte_swapped = TRUE;
modified = FALSE;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
break;
case PCAP_SWAPPED_MODIFIED_MAGIC:
@@ -148,7 +148,7 @@ int libpcap_open(wtap *wth, int *err, gchar **err_info)
or ss991029 libpcap. */
byte_swapped = TRUE;
modified = TRUE;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
break;
case PCAP_NSEC_MAGIC:
@@ -157,7 +157,7 @@ int libpcap_open(wtap *wth, int *err, gchar **err_info)
except that the time stamps have nanosecond resolution. */
byte_swapped = FALSE;
modified = FALSE;
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
break;
case PCAP_SWAPPED_NSEC_MAGIC:
@@ -167,7 +167,7 @@ int libpcap_open(wtap *wth, int *err, gchar **err_info)
nanosecond resolution. */
byte_swapped = TRUE;
modified = FALSE;
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
break;
default:
@@ -326,7 +326,7 @@ int libpcap_open(wtap *wth, int *err, gchar **err_info)
* precision to nanosecond precision.
*/
wth->file_type_subtype = WTAP_FILE_TYPE_SUBTYPE_PCAP_AIX;
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
return 1;
}
@@ -371,7 +371,7 @@ int libpcap_open(wtap *wth, int *err, gchar **err_info)
subtypes = subtypes_modified;
n_subtypes = N_SUBTYPES_MODIFIED;
} else {
- if (wth->tsprecision == WTAP_FILE_TSPREC_NSEC) {
+ if (wth->file_tsprec == WTAP_TSPREC_NSEC) {
/*
* We have nanosecond-format libpcap's magic
* number. Try the subtypes for that.
@@ -715,7 +715,7 @@ libpcap_read_packet(wtap *wth, FILE_T fh, struct wtap_pkthdr *phdr,
/* Update the timestamp, if not already done */
if (wth->file_encap != WTAP_ENCAP_ERF) {
phdr->ts.secs = hdr.hdr.ts_sec;
- if (wth->tsprecision == WTAP_FILE_TSPREC_NSEC)
+ if (wth->file_tsprec == WTAP_TSPREC_NSEC)
phdr->ts.nsecs = hdr.hdr.ts_usec;
else
phdr->ts.nsecs = hdr.hdr.ts_usec * 1000;
@@ -851,18 +851,18 @@ gboolean libpcap_dump_open(wtap_dumper *wdh, int *err)
case WTAP_FILE_TYPE_SUBTYPE_PCAP_SS990417: /* modified, but with the old magic, sigh */
case WTAP_FILE_TYPE_SUBTYPE_PCAP_NOKIA: /* Nokia libpcap of some sort */
magic = PCAP_MAGIC;
- wdh->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wdh->tsprecision = WTAP_TSPREC_USEC;
break;
case WTAP_FILE_TYPE_SUBTYPE_PCAP_SS990915: /* new magic, extra crap */
case WTAP_FILE_TYPE_SUBTYPE_PCAP_SS991029:
magic = PCAP_MODIFIED_MAGIC;
- wdh->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wdh->tsprecision = WTAP_TSPREC_USEC;
break;
case WTAP_FILE_TYPE_SUBTYPE_PCAP_NSEC: /* same as WTAP_FILE_TYPE_SUBTYPE_PCAP, but nsec precision */
magic = PCAP_NSEC_MAGIC;
- wdh->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wdh->tsprecision = WTAP_TSPREC_NSEC;
break;
default:
@@ -928,7 +928,7 @@ static gboolean libpcap_dump(wtap_dumper *wdh,
}
rec_hdr.hdr.ts_sec = (guint32) phdr->ts.secs;
- if(wdh->tsprecision == WTAP_FILE_TSPREC_NSEC) {
+ if(wdh->tsprecision == WTAP_TSPREC_NSEC) {
rec_hdr.hdr.ts_usec = phdr->ts.nsecs;
} else {
rec_hdr.hdr.ts_usec = phdr->ts.nsecs / 1000;
diff --git a/wiretap/logcat.c b/wiretap/logcat.c
index f50b118fe3..d8c603cfdd 100644
--- a/wiretap/logcat.c
+++ b/wiretap/logcat.c
@@ -277,7 +277,7 @@ int logcat_open(wtap *wth, int *err, gchar **err_info _U_)
wth->subtype_read = logcat_read;
wth->subtype_seek_read = logcat_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
return 1;
}
@@ -332,7 +332,7 @@ gboolean logcat_binary_dump_open(wtap_dumper *wdh, int *err)
switch (wdh->encap) {
case WTAP_ENCAP_LOGCAT:
case WTAP_ENCAP_WIRESHARK_UPPER_PDU:
- wdh->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wdh->tsprecision = WTAP_TSPREC_USEC;
break;
default:
diff --git a/wiretap/logcat_text.c b/wiretap/logcat_text.c
index 89ca100d76..546fd1c5a5 100644
--- a/wiretap/logcat_text.c
+++ b/wiretap/logcat_text.c
@@ -310,7 +310,7 @@ int logcat_text_open(wtap *wth, int *err, gchar **err_info _U_) {
wth->subtype_read = logcat_text_read;
wth->subtype_seek_read = logcat_text_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
return 1;
}
diff --git a/wiretap/mime_file.c b/wiretap/mime_file.c
index e89f16dea6..7b67dbe830 100644
--- a/wiretap/mime_file.c
+++ b/wiretap/mime_file.c
@@ -204,7 +204,7 @@ mime_file_open(wtap *wth, int *err, gchar **err_info)
wth->file_type_subtype = WTAP_FILE_TYPE_SUBTYPE_MIME;
wth->file_encap = WTAP_ENCAP_MIME;
- wth->tsprecision = WTAP_FILE_TSPREC_SEC;
+ wth->file_tsprec = WTAP_TSPREC_SEC;
wth->subtype_read = mime_read;
wth->subtype_seek_read = mime_seek_read;
wth->snapshot_length = 0;
diff --git a/wiretap/mp2t.c b/wiretap/mp2t.c
index 3b3dc81a9e..faf6b93598 100644
--- a/wiretap/mp2t.c
+++ b/wiretap/mp2t.c
@@ -231,7 +231,7 @@ mp2t_open(wtap *wth, int *err, gchar **err_info)
wth->file_type_subtype = WTAP_FILE_TYPE_SUBTYPE_MPEG_2_TS;
wth->file_encap = WTAP_ENCAP_MPEG_2_TS;
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
wth->subtype_read = mp2t_read;
wth->subtype_seek_read = mp2t_seek_read;
wth->snapshot_length = 0;
diff --git a/wiretap/mpeg.c b/wiretap/mpeg.c
index 92cdc80b20..05ac414260 100644
--- a/wiretap/mpeg.c
+++ b/wiretap/mpeg.c
@@ -290,7 +290,7 @@ good_magic:
wth->file_type_subtype = WTAP_FILE_TYPE_SUBTYPE_MPEG;
wth->file_encap = WTAP_ENCAP_MPEG;
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
wth->subtype_read = mpeg_read;
wth->subtype_seek_read = mpeg_seek_read;
wth->snapshot_length = 0;
diff --git a/wiretap/netmon.c b/wiretap/netmon.c
index bb974a931a..f2e7e5a5c5 100644
--- a/wiretap/netmon.c
+++ b/wiretap/netmon.c
@@ -395,7 +395,7 @@ int netmon_open(wtap *wth, int *err, gchar **err_info)
* Version 1.x of the file format supports
* millisecond precision.
*/
- wth->tsprecision = WTAP_FILE_TSPREC_MSEC;
+ wth->file_tsprec = WTAP_TSPREC_MSEC;
break;
case 2:
@@ -405,7 +405,7 @@ int netmon_open(wtap *wth, int *err, gchar **err_info)
* currently support that, so say
* "nanosecond precision" for now.
*/
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
break;
}
return 1;
diff --git a/wiretap/netscaler.c b/wiretap/netscaler.c
index 00cfd1f5cd..f6e4346e76 100644
--- a/wiretap/netscaler.c
+++ b/wiretap/netscaler.c
@@ -781,7 +781,7 @@ int nstrace_open(wtap *wth, int *err, gchar **err_info)
nstrace->nstrace_buf_offset = 0;
}
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
wth->phdr.ts.secs = nstrace->nspm_curtime;
wth->phdr.ts.nsecs = 0;
diff --git a/wiretap/netscreen.c b/wiretap/netscreen.c
index c1fb1ece96..61b32834ee 100644
--- a/wiretap/netscreen.c
+++ b/wiretap/netscreen.c
@@ -184,7 +184,7 @@ int netscreen_open(wtap *wth, int *err, gchar **err_info)
wth->snapshot_length = 0; /* not known */
wth->subtype_read = netscreen_read;
wth->subtype_seek_read = netscreen_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_DSEC;
+ wth->file_tsprec = WTAP_TSPREC_DSEC;
return 1;
}
diff --git a/wiretap/nettl.c b/wiretap/nettl.c
index 9fa6462fb7..14863848b3 100644
--- a/wiretap/nettl.c
+++ b/wiretap/nettl.c
@@ -282,7 +282,7 @@ int nettl_open(wtap *wth, int *err, gchar **err_info)
if (file_seek(wth->fh, FILE_HDR_SIZE, SEEK_SET, err) == -1) {
return -1;
}
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
return 1;
}
diff --git a/wiretap/network_instruments.c b/wiretap/network_instruments.c
index 6b941aaff7..d803c76e77 100644
--- a/wiretap/network_instruments.c
+++ b/wiretap/network_instruments.c
@@ -245,7 +245,7 @@ int network_instruments_open(wtap *wth, int *err, gchar **err_info)
wth->subtype_close = NULL;
wth->subtype_sequential_close = NULL;
wth->snapshot_length = 0; /* not available in header */
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
wth->file_type_subtype = WTAP_FILE_TYPE_SUBTYPE_NETWORK_INSTRUMENTS;
/* reset the pointer to the first packet */
diff --git a/wiretap/netxray.c b/wiretap/netxray.c
index d8704d9fa0..5bb9732bde 100644
--- a/wiretap/netxray.c
+++ b/wiretap/netxray.c
@@ -576,12 +576,12 @@ netxray_open(wtap *wth, int *err, gchar **err_info)
case WTAP_FILE_TYPE_SUBTYPE_NETXRAY_OLD:
ticks_per_sec = 1000.0;
- wth->tsprecision = WTAP_FILE_TSPREC_MSEC;
+ wth->file_tsprec = WTAP_TSPREC_MSEC;
break;
case WTAP_FILE_TYPE_SUBTYPE_NETXRAY_1_0:
ticks_per_sec = 1000.0;
- wth->tsprecision = WTAP_FILE_TSPREC_MSEC;
+ wth->file_tsprec = WTAP_TSPREC_MSEC;
break;
case WTAP_FILE_TYPE_SUBTYPE_NETXRAY_1_1:
@@ -592,7 +592,7 @@ netxray_open(wtap *wth, int *err, gchar **err_info)
* and older versions of Windows Sniffer.
*/
ticks_per_sec = 1000000.0;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
break;
case WTAP_FILE_TYPE_SUBTYPE_NETXRAY_2_00x:
@@ -749,9 +749,9 @@ netxray_open(wtap *wth, int *err, gchar **err_info)
* XXX - Seems reasonable to use nanosecs only if TPS >= 10M
*/
if (ticks_per_sec >= 1e7)
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
else
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
break;
default:
diff --git a/wiretap/ngsniffer.c b/wiretap/ngsniffer.c
index 085e403ee3..e9d7595488 100644
--- a/wiretap/ngsniffer.c
+++ b/wiretap/ngsniffer.c
@@ -789,7 +789,7 @@ ngsniffer_open(wtap *wth, int *err, gchar **err_info)
* isn't stored in the capture file.
*/
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC; /* XXX */
+ wth->file_tsprec = WTAP_TSPREC_NSEC; /* XXX */
return 1;
}
diff --git a/wiretap/packetlogger.c b/wiretap/packetlogger.c
index 51954f87ee..065ad4aaed 100644
--- a/wiretap/packetlogger.c
+++ b/wiretap/packetlogger.c
@@ -88,7 +88,7 @@ int packetlogger_open(wtap *wth, int *err, gchar **err_info)
wth->file_type_subtype = WTAP_FILE_TYPE_SUBTYPE_PACKETLOGGER;
wth->file_encap = WTAP_ENCAP_PACKETLOGGER;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
return 1; /* Our kind of file */
}
diff --git a/wiretap/pcapng.c b/wiretap/pcapng.c
index db8fe49118..39738805cc 100644
--- a/wiretap/pcapng.c
+++ b/wiretap/pcapng.c
@@ -353,7 +353,6 @@ typedef struct wtapng_block_s {
*/
struct wtap_pkthdr *packet_header;
Buffer *frame_buffer;
- int *file_encap;
} wtapng_block_t;
/* Interface data in private struct */
@@ -361,6 +360,7 @@ typedef struct interface_info_s {
int wtap_encap;
guint32 snap_len;
guint64 time_units_per_second;
+ int tsprecision;
} interface_info_t;
typedef struct {
@@ -711,10 +711,12 @@ pcapng_read_section_header_block(FILE_T fh, gboolean first_block,
/* "Interface Description Block" */
static int
-pcapng_read_if_descr_block(FILE_T fh, pcapng_block_header_t *bh, pcapng_t *pn,
- wtapng_block_t *wblock, int *err, gchar **err_info)
+pcapng_read_if_descr_block(wtap *wth, FILE_T fh, pcapng_block_header_t *bh,
+ pcapng_t *pn, wtapng_block_t *wblock, int *err,
+ gchar **err_info)
{
- guint64 time_units_per_second = 1000000; /* default */
+ guint64 time_units_per_second = 1000000; /* default = 10^6 */
+ int tsprecision = WTAP_TSPREC_USEC;
int bytes_read;
guint block_read;
guint to_read, opt_cont_buf_len;
@@ -773,6 +775,7 @@ pcapng_read_if_descr_block(FILE_T fh, pcapng_block_header_t *bh, pcapng_t *pn,
wblock->data.if_descr.wtap_encap = wtap_pcap_encap_to_wtap_encap(wblock->data.if_descr.link_type);
wblock->data.if_descr.time_units_per_second = time_units_per_second;
+ wblock->data.if_descr.tsprecision = tsprecision;
pcapng_debug3("pcapng_read_if_descr_block: IDB link_type %u (%s), snap %u",
wblock->data.if_descr.link_type,
@@ -908,7 +911,20 @@ pcapng_read_if_descr_block(FILE_T fh, pcapng_block_header_t *bh, pcapng_t *pn,
}
wblock->data.if_descr.time_units_per_second = time_units_per_second;
wblock->data.if_descr.if_tsresol = if_tsresol;
- pcapng_debug2("pcapng_read_if_descr_block: if_tsresol %u, units/s %" G_GINT64_MODIFIER "u", wblock->data.if_descr.if_tsresol, wblock->data.if_descr.time_units_per_second);
+ if (time_units_per_second >= 1000000000)
+ tsprecision = WTAP_TSPREC_NSEC;
+ else if (time_units_per_second >= 1000000)
+ tsprecision = WTAP_TSPREC_USEC;
+ else if (time_units_per_second >= 1000)
+ tsprecision = WTAP_TSPREC_MSEC;
+ else if (time_units_per_second >= 100)
+ tsprecision = WTAP_TSPREC_CSEC;
+ else if (time_units_per_second >= 10)
+ tsprecision = WTAP_TSPREC_DSEC;
+ else
+ tsprecision = WTAP_TSPREC_SEC;
+ wblock->data.if_descr.tsprecision = tsprecision;
+ pcapng_debug3("pcapng_read_if_descr_block: if_tsresol %u, units/s %" G_GINT64_MODIFIER "u, tsprecision %d", wblock->data.if_descr.if_tsresol, wblock->data.if_descr.time_units_per_second, tsprecision);
} else {
pcapng_debug1("pcapng_read_if_descr_block: if_tsresol length %u not 1 as expected", oh.option_length);
}
@@ -970,11 +986,32 @@ pcapng_read_if_descr_block(FILE_T fh, pcapng_block_header_t *bh, pcapng_t *pn,
g_free(option_content);
- if (*wblock->file_encap == WTAP_ENCAP_UNKNOWN) {
- *wblock->file_encap = wblock->data.if_descr.wtap_encap;
+ /*
+ * If the per-file encapsulation isn't known, set it to this
+ * interface's encapsulation.
+ *
+ * If it *is* known, and it isn't this interface's encapsulation,
+ * set it to WTAP_ENCAP_PER_PACKET, as this file doesn't
+ * have a single encapsulation for all interfaces in the file,
+ * so it probably doesn't have a single encapsulation for all
+ * packets in the file.
+ */
+ if (wth->file_encap == WTAP_ENCAP_UNKNOWN) {
+ wth->file_encap = wblock->data.if_descr.wtap_encap;
+ } else {
+ if (wth->file_encap != wblock->data.if_descr.wtap_encap) {
+ wth->file_encap = WTAP_ENCAP_PER_PACKET;
+ }
+ }
+
+ /*
+ * The same applies to the per-file time stamp resolution.
+ */
+ if (wth->file_tsprec == WTAP_TSPREC_UNKNOWN) {
+ wth->file_tsprec = wblock->data.if_descr.tsprecision;
} else {
- if (*wblock->file_encap != wblock->data.if_descr.wtap_encap) {
- *wblock->file_encap = WTAP_ENCAP_PER_PACKET;
+ if (wth->file_tsprec != wblock->data.if_descr.tsprecision) {
+ wth->file_tsprec = WTAP_TSPREC_PER_PACKET;
}
}
@@ -1172,6 +1209,7 @@ pcapng_read_packet_block(FILE_T fh, pcapng_block_header_t *bh, pcapng_t *pn, wta
pcap_get_phdr_size(iface_info.wtap_encap, &wblock->packet_header->pseudo_header));
wblock->packet_header->interface_id = packet.interface_id;
wblock->packet_header->pkt_encap = iface_info.wtap_encap;
+ wblock->packet_header->pkt_tsprec = iface_info.tsprecision;
memset((void *)&wblock->packet_header->pseudo_header, 0, sizeof(union wtap_pseudo_header));
pseudo_header_len = pcap_process_pseudo_header(fh,
@@ -1444,6 +1482,7 @@ pcapng_read_simple_packet_block(FILE_T fh, pcapng_block_header_t *bh, pcapng_t *
wblock->packet_header->presence_flags = WTAP_HAS_CAP_LEN|WTAP_HAS_INTERFACE_ID;
wblock->packet_header->interface_id = 0;
wblock->packet_header->pkt_encap = iface_info.wtap_encap;
+ wblock->packet_header->pkt_tsprec = iface_info.tsprecision;
wblock->packet_header->ts.secs = 0;
wblock->packet_header->ts.nsecs = 0;
wblock->packet_header->interface_id = 0;
@@ -2056,7 +2095,7 @@ pcapng_read_unknown_block(FILE_T fh, pcapng_block_header_t *bh, pcapng_t *pn _U_
static int
-pcapng_read_block(FILE_T fh, gboolean first_block, pcapng_t *pn, wtapng_block_t *wblock, int *err, gchar **err_info)
+pcapng_read_block(wtap *wth, FILE_T fh, gboolean first_block, pcapng_t *pn, wtapng_block_t *wblock, int *err, gchar **err_info)
{
int block_read;
int bytes_read;
@@ -2112,7 +2151,7 @@ pcapng_read_block(FILE_T fh, gboolean first_block, pcapng_t *pn, wtapng_block_t
bytes_read = pcapng_read_section_header_block(fh, first_block, &bh, pn, wblock, err, err_info);
break;
case(BLOCK_TYPE_IDB):
- bytes_read = pcapng_read_if_descr_block(fh, &bh, pn, wblock, err, err_info);
+ bytes_read = pcapng_read_if_descr_block(wth, fh, &bh, pn, wblock, err, err_info);
break;
case(BLOCK_TYPE_PB):
bytes_read = pcapng_read_packet_block(fh, &bh, pn, wblock, err, err_info, FALSE);
@@ -2202,6 +2241,7 @@ pcapng_process_idb(wtap *wth, pcapng_t *pcapng, wtapng_block_t *wblock)
iface_info.wtap_encap = wblock->data.if_descr.wtap_encap;
iface_info.snap_len = wblock->data.if_descr.snap_len;
iface_info.time_units_per_second = wblock->data.if_descr.time_units_per_second;
+ iface_info.tsprecision = wblock->data.if_descr.tsprecision;
g_array_append_val(pcapng->interfaces, iface_info);
}
@@ -2229,11 +2269,10 @@ pcapng_open(wtap *wth, int *err, gchar **err_info)
/* we don't expect any packet blocks yet */
wblock.frame_buffer = NULL;
wblock.packet_header = NULL;
- wblock.file_encap = &wth->file_encap;
pcapng_debug0("pcapng_open: opening file");
/* read first block */
- bytes_read = pcapng_read_block(wth->fh, TRUE, &pn, &wblock, err, err_info);
+ bytes_read = pcapng_read_block(wth, wth->fh, TRUE, &pn, &wblock, err, err_info);
if (bytes_read <= 0) {
pcapng_free_wtapng_block_data(&wblock);
if (bytes_read == -2) {
@@ -2272,7 +2311,7 @@ pcapng_open(wtap *wth, int *err, gchar **err_info)
wth->file_encap = WTAP_ENCAP_UNKNOWN;
wth->snapshot_length = 0;
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_UNKNOWN;
pcapng = (pcapng_t *)g_malloc(sizeof(pcapng_t));
wth->priv = (void *)pcapng;
*pcapng = pn;
@@ -2313,7 +2352,7 @@ pcapng_open(wtap *wth, int *err, gchar **err_info)
if (bh.block_type != BLOCK_TYPE_IDB) {
break; /* No more IDB:s */
}
- bytes_read = pcapng_read_block(wth->fh, FALSE, &pn, &wblock, err, err_info);
+ bytes_read = pcapng_read_block(wth, wth->fh, FALSE, &pn, &wblock, err, err_info);
if (bytes_read == 0) {
pcapng_debug0("No more IDBs available...");
pcapng_free_wtapng_block_data(&wblock);
@@ -2349,14 +2388,13 @@ pcapng_read(wtap *wth, int *err, gchar **err_info, gint64 *data_offset)
wblock.frame_buffer = wth->frame_buffer;
wblock.packet_header = &wth->phdr;
- wblock.file_encap = &wth->file_encap;
pcapng->add_new_ipv4 = wth->add_new_ipv4;
pcapng->add_new_ipv6 = wth->add_new_ipv6;
/* read next block */
while (1) {
- bytes_read = pcapng_read_block(wth->fh, FALSE, pcapng, &wblock, err, err_info);
+ bytes_read = pcapng_read_block(wth, wth->fh, FALSE, pcapng, &wblock, err, err_info);
if (bytes_read <= 0) {
pcapng_debug1("pcapng_read: data_offset is finally %" G_GINT64_MODIFIER "d", *data_offset);
pcapng_debug0("pcapng_read: couldn't read packet block");
@@ -2368,6 +2406,7 @@ pcapng_read(wtap *wth, int *err, gchar **err_info, gint64 *data_offset)
case(BLOCK_TYPE_SHB):
/* We don't currently support multi-section files. */
wth->phdr.pkt_encap = WTAP_ENCAP_UNKNOWN;
+ wth->phdr.pkt_tsprec = WTAP_TSPREC_UNKNOWN;
*err = WTAP_ERR_UNSUPPORTED;
*err_info = g_strdup_printf("pcapng: multi-section files not currently supported");
return FALSE;
@@ -2462,10 +2501,9 @@ pcapng_seek_read(wtap *wth, gint64 seek_off,
wblock.frame_buffer = buf;
wblock.packet_header = phdr;
- wblock.file_encap = &wth->file_encap;
/* read the block */
- bytes_read = pcapng_read_block(wth->random_fh, FALSE, pcapng, &wblock, err, err_info);
+ bytes_read = pcapng_read_block(wth, wth->random_fh, FALSE, pcapng, &wblock, err, err_info);
pcapng_free_wtapng_block_data(&wblock);
if (bytes_read <= 0) {
pcapng_debug3("pcapng_seek_read: couldn't read packet block (err=%d, errno=%d, bytes_read=%d).",
diff --git a/wiretap/peekclassic.c b/wiretap/peekclassic.c
index 2167cbd645..48454addf6 100644
--- a/wiretap/peekclassic.c
+++ b/wiretap/peekclassic.c
@@ -353,7 +353,7 @@ int peekclassic_open(wtap *wth, int *err, gchar **err_info)
}
wth->snapshot_length = 0; /* not available in header */
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
return 1;
}
diff --git a/wiretap/peektagged.c b/wiretap/peektagged.c
index 3084ebf353..c7a695e14b 100644
--- a/wiretap/peektagged.c
+++ b/wiretap/peektagged.c
@@ -345,7 +345,7 @@ int peektagged_open(wtap *wth, int *err, gchar **err_info)
wth->file_encap = file_encap;
wth->subtype_read = peektagged_read;
wth->subtype_seek_read = peektagged_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_NSEC;
+ wth->file_tsprec = WTAP_TSPREC_NSEC;
peektagged = (peektagged_t *)g_malloc(sizeof(peektagged_t));
wth->priv = (void *)peektagged;
diff --git a/wiretap/pppdump.c b/wiretap/pppdump.c
index 173a97adef..0ca9201ff5 100644
--- a/wiretap/pppdump.c
+++ b/wiretap/pppdump.c
@@ -298,7 +298,7 @@ pppdump_open(wtap *wth, int *err, gchar **err_info)
wth->subtype_read = pppdump_read;
wth->subtype_seek_read = pppdump_seek_read;
wth->subtype_close = pppdump_close;
- wth->tsprecision = WTAP_FILE_TSPREC_DSEC;
+ wth->file_tsprec = WTAP_TSPREC_DSEC;
state->seek_state = g_new(pppdump_t,1);
diff --git a/wiretap/radcom.c b/wiretap/radcom.c
index 024b62c598..9b0072c1ff 100644
--- a/wiretap/radcom.c
+++ b/wiretap/radcom.c
@@ -164,7 +164,7 @@ int radcom_open(wtap *wth, int *err, gchar **err_info)
wth->subtype_read = radcom_read;
wth->subtype_seek_read = radcom_seek_read;
wth->snapshot_length = 0; /* not available in header, only in frame */
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
#if 0
tm.tm_year = pletoh16(&start_date.year)-1900;
diff --git a/wiretap/snoop.c b/wiretap/snoop.c
index b023c327bf..0318a07257 100644
--- a/wiretap/snoop.c
+++ b/wiretap/snoop.c
@@ -427,7 +427,7 @@ int snoop_open(wtap *wth, int *err, gchar **err_info)
wth->subtype_seek_read = snoop_seek_read;
wth->file_encap = file_encap;
wth->snapshot_length = 0; /* not available in header */
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
return 1;
}
diff --git a/wiretap/stanag4607.c b/wiretap/stanag4607.c
index c3703cc7ff..bdf458fe35 100644
--- a/wiretap/stanag4607.c
+++ b/wiretap/stanag4607.c
@@ -197,7 +197,7 @@ int stanag4607_open(wtap *wth, int *err, gchar **err_info)
wth->subtype_read = stanag4607_read;
wth->subtype_seek_read = stanag4607_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_MSEC;
+ wth->file_tsprec = WTAP_TSPREC_MSEC;
return 1;
}
diff --git a/wiretap/tnef.c b/wiretap/tnef.c
index aada2b9c0f..2e8b565485 100644
--- a/wiretap/tnef.c
+++ b/wiretap/tnef.c
@@ -121,7 +121,7 @@ int tnef_open(wtap *wth, int *err, gchar **err_info)
wth->subtype_read = tnef_read;
wth->subtype_seek_read = tnef_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_SEC;
+ wth->file_tsprec = WTAP_TSPREC_SEC;
return 1;
}
diff --git a/wiretap/toshiba.c b/wiretap/toshiba.c
index 1cbff935dc..a6e36057c0 100644
--- a/wiretap/toshiba.c
+++ b/wiretap/toshiba.c
@@ -208,7 +208,7 @@ int toshiba_open(wtap *wth, int *err, gchar **err_info)
wth->snapshot_length = 0; /* not known */
wth->subtype_read = toshiba_read;
wth->subtype_seek_read = toshiba_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_CSEC;
+ wth->file_tsprec = WTAP_TSPREC_CSEC;
return 1;
}
diff --git a/wiretap/visual.c b/wiretap/visual.c
index 23c76e59ca..aab7e4a9c4 100644
--- a/wiretap/visual.c
+++ b/wiretap/visual.c
@@ -264,7 +264,7 @@ int visual_open(wtap *wth, int *err, gchar **err_info)
/* Set up the pointers to the handlers for this file type */
wth->subtype_read = visual_read;
wth->subtype_seek_read = visual_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
/* Add Visual-specific information to the wiretap struct for later use. */
visual = (struct visual_read_info *)g_malloc(sizeof(struct visual_read_info));
diff --git a/wiretap/vms.c b/wiretap/vms.c
index e05ca8fffd..61a3fc1d32 100644
--- a/wiretap/vms.c
+++ b/wiretap/vms.c
@@ -249,7 +249,7 @@ int vms_open(wtap *wth, int *err, gchar **err_info)
wth->snapshot_length = 0; /* not known */
wth->subtype_read = vms_read;
wth->subtype_seek_read = vms_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_CSEC;
+ wth->file_tsprec = WTAP_TSPREC_CSEC;
return 1;
}
diff --git a/wiretap/vwr.c b/wiretap/vwr.c
index 7593f72672..64ab7d32c9 100644
--- a/wiretap/vwr.c
+++ b/wiretap/vwr.c
@@ -551,7 +551,7 @@ int vwr_open(wtap *wth, int *err, gchar **err_info)
wth->snapshot_length = 0;
wth->subtype_read = vwr_read;
wth->subtype_seek_read = vwr_seek_read;
- wth->tsprecision = WTAP_FILE_TSPREC_USEC;
+ wth->file_tsprec = WTAP_TSPREC_USEC;
wth->file_encap = WTAP_ENCAP_IXVERIWAVE;
if (fpgaVer == S2_W_FPGA || fpgaVer == S1_W_FPGA || fpgaVer == S3_W_FPGA)
diff --git a/wiretap/wtap-int.h b/wiretap/wtap-int.h
index dfa3441835..fa95119dfe 100644
--- a/wiretap/wtap-int.h
+++ b/wiretap/wtap-int.h
@@ -68,10 +68,18 @@ struct wtap {
int file_encap; /* per-file, for those
* file formats that have
* per-file encapsulation
- * types
+ * types rather than per-packet
+ * encapsulation types
*/
- int tsprecision; /* timestamp precision of the lower 32bits
- * e.g. WTAP_FILE_TSPREC_USEC
+ int file_tsprec; /* per-file timestamp precision
+ * of the fractional part of
+ * the time stamp, for those
+ * file formats that have
+ * per-file timestamp
+ * precision rather than
+ * per-packet timestamp
+ * precision
+ * e.g. WTAP_TSPREC_USEC
*/
wtap_new_ipv4_callback_t add_new_ipv4;
wtap_new_ipv6_callback_t add_new_ipv6;
@@ -105,7 +113,7 @@ struct wtap_dumper {
subtype_close_func subtype_close;
int tsprecision; /**< timestamp precision of the lower 32bits
- * e.g. WTAP_FILE_TSPREC_USEC
+ * e.g. WTAP_TSPREC_USEC
*/
addrinfo_lists_t *addrinfo_lists; /**< Struct containing lists of resolved addresses */
struct wtapng_section_s *shb_hdr;
diff --git a/wiretap/wtap.c b/wiretap/wtap.c
index 0ac1c655d4..a4fb756059 100644
--- a/wiretap/wtap.c
+++ b/wiretap/wtap.c
@@ -162,9 +162,9 @@ wtap_file_encap(wtap *wth)
}
int
-wtap_file_tsprecision(wtap *wth)
+wtap_file_tsprec(wtap *wth)
{
- return wth->tsprecision;
+ return wth->file_tsprec;
}
wtapng_section_t *
@@ -996,8 +996,11 @@ wtap_read(wtap *wth, int *err, gchar **err_info, gint64 *data_offset)
* capture file type doesn't have to set it), and if it
* *is* WTAP_ENCAP_PER_PACKET, the caller needs to set it
* anyway.
+ *
+ * Do the same for the packet time stamp resolution.
*/
wth->phdr.pkt_encap = wth->file_encap;
+ wth->phdr.pkt_tsprec = wth->file_tsprec;
if (!wth->subtype_read(wth, err, err_info, data_offset)) {
/*
diff --git a/wiretap/wtap.h b/wiretap/wtap.h
index 0a97189abd..e58134a2f0 100644
--- a/wiretap/wtap.h
+++ b/wiretap/wtap.h
@@ -353,12 +353,14 @@ extern "C" {
#define WTAP_NUM_FILE_TYPES_SUBTYPES wtap_get_num_file_types_subtypes()
/* timestamp precision (currently only these values are supported) */
-#define WTAP_FILE_TSPREC_SEC 0
-#define WTAP_FILE_TSPREC_DSEC 1
-#define WTAP_FILE_TSPREC_CSEC 2
-#define WTAP_FILE_TSPREC_MSEC 3
-#define WTAP_FILE_TSPREC_USEC 6
-#define WTAP_FILE_TSPREC_NSEC 9
+#define WTAP_TSPREC_UNKNOWN -2
+#define WTAP_TSPREC_PER_PACKET -1 /* as a per-file value, means per-packet */
+#define WTAP_TSPREC_SEC 0
+#define WTAP_TSPREC_DSEC 1
+#define WTAP_TSPREC_CSEC 2
+#define WTAP_TSPREC_MSEC 3
+#define WTAP_TSPREC_USEC 6
+#define WTAP_TSPREC_NSEC 9
/*
* Maximum packet size we'll support.
@@ -969,7 +971,8 @@ struct wtap_pkthdr {
nstime_t ts;
guint32 caplen; /* data length in the file */
guint32 len; /* data length on the wire */
- int pkt_encap;
+ int pkt_encap; /* WTAP_ENCAP_ value for this packet */
+ int pkt_tsprec; /* WTAP_TSPREC_ value for this packet */
/* pcapng variables */
guint32 interface_id; /* identifier of the interface. */
/* options */
@@ -1112,6 +1115,7 @@ typedef struct wtapng_iface_descriptions_s {
typedef struct wtapng_if_descr_s {
int wtap_encap; /**< link_type translated to wtap_encap */
guint64 time_units_per_second;
+ int tsprecision; /**< WTAP_TSPREC_ value for this interface */
/* mandatory */
guint16 link_type;
@@ -1431,7 +1435,7 @@ int wtap_file_type_subtype(wtap *wth);
WS_DLL_PUBLIC
int wtap_file_encap(wtap *wth);
WS_DLL_PUBLIC
-int wtap_file_tsprecision(wtap *wth);
+int wtap_file_tsprec(wtap *wth);
WS_DLL_PUBLIC
wtapng_section_t* wtap_file_get_shb_info(wtap *wth);
WS_DLL_PUBLIC