Compare commits

...

3 commits

Author SHA1 Message Date
560edb7c43
Releasing debian version 2.3.1-1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-04-24 14:04:34 +02:00
867d1e35ad
Removing time64.patch, included upstream.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-04-24 14:04:34 +02:00
685d423929
Merging upstream version 2.3.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-04-24 14:04:33 +02:00
15 changed files with 214 additions and 314 deletions

168
configure vendored
View file

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.71 for dnscap 2.3.0. # Generated by GNU Autoconf 2.71 for dnscap 2.3.1.
# #
# Report bugs to <dnscap-users@dns-oarc.net>. # Report bugs to <dnscap-users@dns-oarc.net>.
# #
@ -621,8 +621,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='dnscap' PACKAGE_NAME='dnscap'
PACKAGE_TARNAME='dnscap' PACKAGE_TARNAME='dnscap'
PACKAGE_VERSION='2.3.0' PACKAGE_VERSION='2.3.1'
PACKAGE_STRING='dnscap 2.3.0' PACKAGE_STRING='dnscap 2.3.1'
PACKAGE_BUGREPORT='dnscap-users@dns-oarc.net' PACKAGE_BUGREPORT='dnscap-users@dns-oarc.net'
PACKAGE_URL='https://github.com/DNS-OARC/dnscap/issues' PACKAGE_URL='https://github.com/DNS-OARC/dnscap/issues'
@ -1382,7 +1382,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures dnscap 2.3.0 to adapt to many kinds of systems. \`configure' configures dnscap 2.3.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1453,7 +1453,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of dnscap 2.3.0:";; short | recursive ) echo "Configuration of dnscap 2.3.1:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1586,7 +1586,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
dnscap configure 2.3.0 dnscap configure 2.3.1
generated by GNU Autoconf 2.71 generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc. Copyright (C) 2021 Free Software Foundation, Inc.
@ -1875,6 +1875,58 @@ printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_type } # ac_fn_c_check_type
# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR
# ------------------------------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.
ac_fn_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
printf %s "checking whether $as_decl_name is declared... " >&6; }
if eval test \${$3+y}
then :
printf %s "(cached) " >&6
else $as_nop
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
eval ac_save_FLAGS=\$$6
as_fn_append $6 " $5"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
main (void)
{
#ifndef $as_decl_name
#ifdef __cplusplus
(void) $as_decl_use;
#else
(void) $as_decl_name;
#endif
#endif
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
eval "$3=yes"
else $as_nop
eval "$3=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
eval $6=\$ac_save_FLAGS
fi
eval ac_res=\$$3
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_check_decl
ac_configure_args_raw= ac_configure_args_raw=
for ac_arg for ac_arg
do do
@ -1899,7 +1951,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by dnscap $as_me 2.3.0, which was It was created by dnscap $as_me 2.3.1, which was
generated by GNU Autoconf 2.71. Invocation command line was generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw $ $0$ac_configure_args_raw
@ -3169,7 +3221,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='dnscap' PACKAGE='dnscap'
VERSION='2.3.0' VERSION='2.3.1'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@ -13151,6 +13203,86 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5
printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }
if test ${ac_cv_c_undeclared_builtin_options+y}
then :
printf %s "(cached) " >&6
else $as_nop
ac_save_CFLAGS=$CFLAGS
ac_cv_c_undeclared_builtin_options='cannot detect'
for ac_arg in '' -fno-builtin; do
CFLAGS="$ac_save_CFLAGS $ac_arg"
# This test program should *not* compile successfully.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main (void)
{
(void) strchr;
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
else $as_nop
# This test program should compile successfully.
# No library function is consistently available on
# freestanding implementations, so test against a dummy
# declaration. Include always-available headers on the
# off chance that they somehow elicit warnings.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <float.h>
#include <limits.h>
#include <stdarg.h>
#include <stddef.h>
extern void ac_decl (int, char *);
int
main (void)
{
(void) ac_decl (0, (char *) 0);
(void) ac_decl;
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
if test x"$ac_arg" = x
then :
ac_cv_c_undeclared_builtin_options='none needed'
else $as_nop
ac_cv_c_undeclared_builtin_options=$ac_arg
fi
break
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
CFLAGS=$ac_save_CFLAGS
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
case $ac_cv_c_undeclared_builtin_options in #(
'cannot detect') :
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot make $CC report undeclared builtins
See \`config.log' for more details" "$LINENO" 5; } ;; #(
'none needed') :
ac_c_undeclared_builtin_options='' ;; #(
*) :
ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;
esac
# Check whether --enable-threads was given. # Check whether --enable-threads was given.
if test ${enable_threads+y} if test ${enable_threads+y}
then : then :
@ -13974,6 +14106,14 @@ printf "%s\n" "#define HAVE_PCAP_DIRECTION_T 1" >>confdefs.h
fi fi
ac_fn_check_decl "$LINENO" "DLT_LINUX_SLL2" "ac_cv_have_decl_DLT_LINUX_SLL2" "#include <pcap/pcap.h>
" "$ac_c_undeclared_builtin_options" "CFLAGS"
if test "x$ac_cv_have_decl_DLT_LINUX_SLL2" = xyes
then :
else $as_nop
as_fn_error $? "link-type DLT_LINUX_SLL2 not found, libpcap >= 1.10.0 required" "$LINENO" 5
fi
else $as_nop else $as_nop
@ -14126,6 +14266,14 @@ printf "%s\n" "#define HAVE_PCAP_DIRECTION_T 1" >>confdefs.h
fi fi
ac_fn_check_decl "$LINENO" "DLT_LINUX_SLL2" "ac_cv_have_decl_DLT_LINUX_SLL2" "#include <pcap/pcap.h>
" "$ac_c_undeclared_builtin_options" "CFLAGS"
if test "x$ac_cv_have_decl_DLT_LINUX_SLL2" = xyes
then :
else $as_nop
as_fn_error $? "link-type DLT_LINUX_SLL2 not found, libpcap >= 1.10.0 required" "$LINENO" 5
fi
fi fi
@ -15964,7 +16112,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by dnscap $as_me 2.3.0, which was This file was extended by dnscap $as_me 2.3.1, which was
generated by GNU Autoconf 2.71. Invocation command line was generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -16033,7 +16181,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped' ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\ ac_cs_version="\\
dnscap config.status 2.3.0 dnscap config.status 2.3.1
configured by $0, generated by GNU Autoconf 2.71, configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View file

@ -33,7 +33,7 @@
# POSSIBILITY OF SUCH DAMAGE. # POSSIBILITY OF SUCH DAMAGE.
AC_PREREQ(2.61) AC_PREREQ(2.61)
AC_INIT([dnscap], [2.3.0], [dnscap-users@dns-oarc.net], [dnscap], [https://github.com/DNS-OARC/dnscap/issues]) AC_INIT([dnscap], [2.3.1], [dnscap-users@dns-oarc.net], [dnscap], [https://github.com/DNS-OARC/dnscap/issues])
AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects]) AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects])
AC_CONFIG_SRCDIR([src/dnscap.c]) AC_CONFIG_SRCDIR([src/dnscap.c])
AC_CONFIG_HEADER([src/config.h]) AC_CONFIG_HEADER([src/config.h])

8
debian/changelog vendored
View file

@ -1,3 +1,11 @@
dnscap (2.3.1-1) sid; urgency=medium
* Simplifying watch file.
* Merging upstream version 2.3.1.
* Removing time64.patch, included upstream.
-- Daniel Baumann <daniel@debian.org> Thu, 24 Apr 2025 13:53:30 +0200
dnscap (2.3.0-3) sid; urgency=medium dnscap (2.3.0-3) sid; urgency=medium
* Refreshing time64.patch with an updated version from upstream. * Refreshing time64.patch with an updated version from upstream.

View file

@ -1,2 +1 @@
debian/0001-rssm-shebang.patch debian/0001-rssm-shebang.patch
upstream/0001-time64.patch

View file

@ -1,271 +0,0 @@
From 731d9e00c686f1b67660403406252f0c742f38eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jerry=20Lundstr=C3=B6m?= <lundstrom.jerry@gmail.com>
Date: Tue, 22 Apr 2025 09:50:50 +0200
Subject: [PATCH] Add support for 64bit time structures on 32bit systems
- Fix #324:
- Add macros for printing `timeval` when `_TIME_BITS` is set to 64
- Clean up usage and printing of `timeval` structures in `src` and `plugins`
---
plugins/pcapdump/pcapdump.c | 6 +++---
plugins/rssm/rssm.c | 16 ++++++++--------
plugins/rzkeychange/rzkeychange.c | 8 ++++----
plugins/txtout/txtout.c | 2 +-
src/dnscap.c | 4 ++--
src/dnscap_common.h | 15 +++++++++++++++
src/dumper.c | 2 +-
src/network.c | 18 +++++++++---------
8 files changed, 43 insertions(+), 28 deletions(-)
diff --git a/plugins/pcapdump/pcapdump.c b/plugins/pcapdump/pcapdump.c
index 5a93b22..e6f2996 100644
--- a/plugins/pcapdump/pcapdump.c
+++ b/plugins/pcapdump/pcapdump.c
@@ -175,10 +175,10 @@ int pcapdump_open(my_bpftimeval ts)
ts.tv_sec++;
ts.tv_usec -= MILLION;
}
- gmtime_r((time_t*)&ts.tv_sec, &tm);
+ gmtime_r(&ts.tv_sec, &tm);
strftime(sbuf, 64, "%Y%m%d.%H%M%S", &tm);
- if (asprintf(&dumpname, "%s.%s.%06lu",
- dump_base, sbuf, (u_long)ts.tv_usec)
+ if (asprintf(&dumpname, "%s.%s.%06" PRI_tv_usec,
+ dump_base, sbuf, ts.tv_usec)
< 0
|| asprintf(&dumpnamepart, "%s.part", dumpname) < 0) {
logerr("asprintf: %s", strerror(errno));
diff --git a/plugins/rssm/rssm.c b/plugins/rssm/rssm.c
index 8d3428b..e760990 100644
--- a/plugins/rssm/rssm.c
+++ b/plugins/rssm/rssm.c
@@ -286,7 +286,7 @@ void rssm_save_counts(const char* sbuf)
FILE* fp;
int i;
char* tbuf = 0;
- i = asprintf(&tbuf, "%s.%s.%06lu", counts_prefix ? counts_prefix : COUNTS_PREFIX_DEFAULT, sbuf, (u_long)open_ts.tv_usec);
+ i = asprintf(&tbuf, "%s.%s.%06" PRI_tv_usec, counts_prefix ? counts_prefix : COUNTS_PREFIX_DEFAULT, sbuf, open_ts.tv_usec);
if (i < 1 || !tbuf) {
logerr("asprintf: out of memory");
return;
@@ -302,7 +302,7 @@ void rssm_save_counts(const char* sbuf)
char tz[21];
struct tm tm;
- gmtime_r((time_t*)&open_ts.tv_sec, &tm);
+ gmtime_r(&open_ts.tv_sec, &tm);
if (!strftime(tz, sizeof(tz), "%Y-%m-%dT%H:%M:%SZ", &tm)) {
logerr("rssm: strftime failed");
fclose(fp);
@@ -443,8 +443,8 @@ void rssm_save_counts(const char* sbuf)
}
}
} else {
- fprintf(fp, "first-packet-time %ld\n", (long)open_ts.tv_sec);
- fprintf(fp, "last-packet-time %ld\n", (long)close_ts.tv_sec);
+ fprintf(fp, "first-packet-time %" PRI_tv_sec "\n", open_ts.tv_sec);
+ fprintf(fp, "last-packet-time %" PRI_tv_sec "\n", close_ts.tv_sec);
fprintf(fp, "dns-udp-queries-received-ipv4 %" PRIu64 "\n", counts.dns_udp_queries_received_ipv4);
fprintf(fp, "dns-udp-queries-received-ipv6 %" PRIu64 "\n", counts.dns_udp_queries_received_ipv6);
fprintf(fp, "dns-tcp-queries-received-ipv4 %" PRIu64 "\n", counts.dns_tcp_queries_received_ipv4);
@@ -510,7 +510,7 @@ void rssm_save_sources(const char* sbuf)
FILE* fp;
char* tbuf = 0;
int i;
- i = asprintf(&tbuf, "%s.%s.%06lu", sources_prefix, sbuf, (u_long)open_ts.tv_usec);
+ i = asprintf(&tbuf, "%s.%s.%06" PRI_tv_usec, sources_prefix, sbuf, open_ts.tv_usec);
if (i < 1 || !tbuf) {
logerr("asprintf: out of memory");
return;
@@ -535,7 +535,7 @@ void rssm_save_aggregated(const char* sbuf)
FILE* fp;
char* tbuf = 0;
int i;
- i = asprintf(&tbuf, "%s.%s.%06lu", aggregated_prefix, sbuf, (u_long)open_ts.tv_usec);
+ i = asprintf(&tbuf, "%s.%s.%06" PRI_tv_usec, aggregated_prefix, sbuf, open_ts.tv_usec);
if (i < 1 || !tbuf) {
logerr("asprintf: out of memory");
return;
@@ -566,7 +566,7 @@ int rssm_close(my_bpftimeval ts)
struct tm tm;
if (dont_fork_on_close) {
- gmtime_r((time_t*)&open_ts.tv_sec, &tm);
+ gmtime_r(&open_ts.tv_sec, &tm);
strftime(sbuf, sizeof(sbuf), "%Y%m%d.%H%M%S", &tm);
close_ts = ts;
rssm_save_counts(sbuf);
@@ -596,7 +596,7 @@ int rssm_close(my_bpftimeval ts)
exit(0);
}
/* grandchild (2nd gen) continues */
- gmtime_r((time_t*)&open_ts.tv_sec, &tm);
+ gmtime_r(&open_ts.tv_sec, &tm);
strftime(sbuf, sizeof(sbuf), "%Y%m%d.%H%M%S", &tm);
close_ts = ts;
rssm_save_counts(sbuf);
diff --git a/plugins/rzkeychange/rzkeychange.c b/plugins/rzkeychange/rzkeychange.c
index dd99316..540e415 100644
--- a/plugins/rzkeychange/rzkeychange.c
+++ b/plugins/rzkeychange/rzkeychange.c
@@ -290,8 +290,8 @@ void rzkeychange_submit_counts(void)
double elapsed = (double)clos_ts.tv_sec - (double)open_ts.tv_sec + 0.000001 * clos_ts.tv_usec - 0.000001 * open_ts.tv_usec; // NOSONAR
int k;
- k = snprintf(qname, sizeof(qname), "%lu-%u-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 ".%s.%s.%s",
- (u_long)open_ts.tv_sec,
+ k = snprintf(qname, sizeof(qname), "%" PRI_tv_sec "-%u-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 ".%s.%s.%s",
+ open_ts.tv_sec,
(unsigned int)(elapsed + 0.5),
counts.total,
counts.dnskey,
@@ -330,8 +330,8 @@ void rzkeychange_submit_counts(void)
if (*t == '.' || *t == ':')
*t = '-';
- k = snprintf(qname, sizeof(qname), "%lu.%s.%hhx.%s.%s.%s.%s",
- (u_long)open_ts.tv_sec,
+ k = snprintf(qname, sizeof(qname), "%" PRI_tv_sec ".%s.%hhx.%s.%s.%s.%s",
+ open_ts.tv_sec,
s,
key_tag_signals[i].flags,
key_tag_signals[i].signal,
diff --git a/plugins/txtout/txtout.c b/plugins/txtout/txtout.c
index 67b41c3..54c71e7 100644
--- a/plugins/txtout/txtout.c
+++ b/plugins/txtout/txtout.c
@@ -220,7 +220,7 @@ void txtout_output(const char* descr, iaddr from, iaddr to, uint8_t proto, unsig
/*
* IP Stuff
*/
- fprintf(out, "%10ld.%06ld", (long)ts.tv_sec, (long)ts.tv_usec);
+ fprintf(out, "%10" PRI_tv_sec ".%06" PRI_tv_usec, ts.tv_sec, ts.tv_usec);
fprintf(out, " %s %u", ia_str(from), sport);
fprintf(out, " %s %u", ia_str(to), dport);
fprintf(out, " %hhu", proto);
diff --git a/src/dnscap.c b/src/dnscap.c
index 7788f0a..aea8370 100644
--- a/src/dnscap.c
+++ b/src/dnscap.c
@@ -143,8 +143,8 @@ int main(int argc, char* argv[])
struct tm tm;
gmtime_r(&start_time, &tm);
strftime(when, sizeof when, "%F %T", &tm);
- fprintf(stderr, "Sleeping for %d seconds until %s UTC\n",
- (int)(start_time - now.tv_sec), when);
+ fprintf(stderr, "Sleeping for %" PRI_tv_sec " seconds until %s UTC\n",
+ start_time - now.tv_sec, when);
sleep(start_time - now.tv_sec);
fprintf(stderr, "Awake.\n");
}
diff --git a/src/dnscap_common.h b/src/dnscap_common.h
index 719ebf4..f131330 100644
--- a/src/dnscap_common.h
+++ b/src/dnscap_common.h
@@ -49,6 +49,21 @@
#endif
#endif
+/* Macros for printing timeval */
+#include <inttypes.h>
+#if _TIME_BITS == 64
+#define PRI_tv_sec PRId64
+#define PRI_tv_usec PRId64
+#else
+#ifdef __OpenBSD__
+#define PRI_tv_sec PRId64
+#define PRI_tv_usec "ld"
+#else
+#define PRI_tv_sec "ld"
+#define PRI_tv_usec "ld"
+#endif
+#endif
+
/*
* setup MY_BPFTIMEVAL as the timeval structure that bpf packets
* will be assoicated with packets from libpcap
diff --git a/src/dumper.c b/src/dumper.c
index 68783e7..b1e6c9a 100644
--- a/src/dumper.c
+++ b/src/dumper.c
@@ -198,7 +198,7 @@ int dumper_open(my_bpftimeval ts)
gmtime_r((time_t*)&ts.tv_sec, &tm);
strftime(sbuf, 64, "%Y%m%d.%H%M%S", &tm);
- if (asprintf(&dumpname, "%s.%s.%06ld%s",
+ if (asprintf(&dumpname, "%s.%s.%06" PRI_tv_usec "%s",
dump_base, sbuf,
ts.tv_usec, dump_suffix ? dump_suffix : "")
< 0
diff --git a/src/network.c b/src/network.c
index f0a6238..7227752 100644
--- a/src/network.c
+++ b/src/network.c
@@ -192,7 +192,7 @@ void layer_pkt(u_char* user, const pcap_thread_packet_t* packet, const u_char* p
break;
}
- t = (time_t)firstpkt->pkthdr.ts.tv_sec;
+ t = firstpkt->pkthdr.ts.tv_sec;
gmtime_r(&t, &tm);
strftime(when, sizeof(when), "%Y-%m-%d %T", &tm);
@@ -207,7 +207,7 @@ void layer_pkt(u_char* user, const pcap_thread_packet_t* packet, const u_char* p
}
if (vlan != MAX_VLAN) {
- snprintf(descr, sizeof(descr), "[%zu] %s.%06ld [#%zd %s (vlan %u) %u] \\\n",
+ snprintf(descr, sizeof(descr), "[%zu] %s.%06" PRI_tv_usec " [#%zd %s (vlan %u) %u] \\\n",
len,
when,
firstpkt->pkthdr.ts.tv_usec,
@@ -216,7 +216,7 @@ void layer_pkt(u_char* user, const pcap_thread_packet_t* packet, const u_char* p
vlan,
vlan);
} else {
- snprintf(descr, sizeof(descr), "[%zu] %s.%06ld [#%zd %s %u] \\\n",
+ snprintf(descr, sizeof(descr), "[%zu] %s.%06" PRI_tv_usec " [#%zd %s %u] \\\n",
len,
when,
firstpkt->pkthdr.ts.tv_usec,
@@ -426,7 +426,7 @@ void dl_pkt(u_char* user, const struct pcap_pkthdr* hdr, const u_char* pkt, cons
struct tm tm;
time_t t;
- t = (time_t)hdr->ts.tv_sec;
+ t = hdr->ts.tv_sec;
gmtime_r(&t, &tm);
strftime(when, sizeof when, "%Y-%m-%d %T", &tm);
if (vlan != MAX_VLAN) {
@@ -437,7 +437,7 @@ void dl_pkt(u_char* user, const struct pcap_pkthdr* hdr, const u_char* pkt, cons
} else {
viap = "\"some interface\"";
}
- snprintf(descr, sizeof(descr), "[%zu] %s.%06ld [#%zu %s %u] \\\n",
+ snprintf(descr, sizeof(descr), "[%zu] %s.%06" PRI_tv_usec " [#%zu %s %u] \\\n",
len, when, hdr->ts.tv_usec, msgcount, viap, vlan);
} else {
descr[0] = '\0';
@@ -725,9 +725,9 @@ void network_pkt2(const char* descr, my_bpftimeval ts, const pcap_thread_packet_
tcpstate = tcpstate_find(from, to, sport, dport, ts.tv_sec);
if (dumptrace >= 3) {
- fprintf(stderr, "%s: tcp pkt: %" PRIdMAX ".%06ld [%4zu] %15s -> ",
+ fprintf(stderr, "%s: tcp pkt: %" PRI_tv_sec ".%06" PRI_tv_usec " [%4zu] %15s -> ",
ProgramName,
- (intmax_t)ts.tv_sec,
+ ts.tv_sec,
ts.tv_usec,
len,
ia_str(from));
@@ -1327,8 +1327,8 @@ void network_pkt(const char* descr, my_bpftimeval ts, unsigned pf,
tcpstate = tcpstate_find(from, to, sport, dport, ts.tv_sec);
if (dumptrace >= 3) {
- fprintf(stderr, "%s: tcp pkt: %" PRIdMAX ".%06ld [%4zu] ", ProgramName,
- (intmax_t)ts.tv_sec, ts.tv_usec, len);
+ fprintf(stderr, "%s: tcp pkt: %" PRI_tv_sec ".%06" PRI_tv_usec " [%4zu] ", ProgramName,
+ ts.tv_sec, ts.tv_usec, len);
fprintf(stderr, "%15s -> ", ia_str(from));
fprintf(stderr, "%15s; ", ia_str(to));
if (tcpstate)

View file

@ -175,10 +175,10 @@ int pcapdump_open(my_bpftimeval ts)
ts.tv_sec++; ts.tv_sec++;
ts.tv_usec -= MILLION; ts.tv_usec -= MILLION;
} }
gmtime_r((time_t*)&ts.tv_sec, &tm); gmtime_r(&ts.tv_sec, &tm);
strftime(sbuf, 64, "%Y%m%d.%H%M%S", &tm); strftime(sbuf, 64, "%Y%m%d.%H%M%S", &tm);
if (asprintf(&dumpname, "%s.%s.%06lu", if (asprintf(&dumpname, "%s.%s.%06" PRI_tv_usec,
dump_base, sbuf, (u_long)ts.tv_usec) dump_base, sbuf, ts.tv_usec)
< 0 < 0
|| asprintf(&dumpnamepart, "%s.part", dumpname) < 0) { || asprintf(&dumpnamepart, "%s.part", dumpname) < 0) {
logerr("asprintf: %s", strerror(errno)); logerr("asprintf: %s", strerror(errno));

View file

@ -286,7 +286,7 @@ void rssm_save_counts(const char* sbuf)
FILE* fp; FILE* fp;
int i; int i;
char* tbuf = 0; char* tbuf = 0;
i = asprintf(&tbuf, "%s.%s.%06lu", counts_prefix ? counts_prefix : COUNTS_PREFIX_DEFAULT, sbuf, (u_long)open_ts.tv_usec); i = asprintf(&tbuf, "%s.%s.%06" PRI_tv_usec, counts_prefix ? counts_prefix : COUNTS_PREFIX_DEFAULT, sbuf, open_ts.tv_usec);
if (i < 1 || !tbuf) { if (i < 1 || !tbuf) {
logerr("asprintf: out of memory"); logerr("asprintf: out of memory");
return; return;
@ -302,7 +302,7 @@ void rssm_save_counts(const char* sbuf)
char tz[21]; char tz[21];
struct tm tm; struct tm tm;
gmtime_r((time_t*)&open_ts.tv_sec, &tm); gmtime_r(&open_ts.tv_sec, &tm);
if (!strftime(tz, sizeof(tz), "%Y-%m-%dT%H:%M:%SZ", &tm)) { if (!strftime(tz, sizeof(tz), "%Y-%m-%dT%H:%M:%SZ", &tm)) {
logerr("rssm: strftime failed"); logerr("rssm: strftime failed");
fclose(fp); fclose(fp);
@ -443,8 +443,8 @@ void rssm_save_counts(const char* sbuf)
} }
} }
} else { } else {
fprintf(fp, "first-packet-time %ld\n", (long)open_ts.tv_sec); fprintf(fp, "first-packet-time %" PRI_tv_sec "\n", open_ts.tv_sec);
fprintf(fp, "last-packet-time %ld\n", (long)close_ts.tv_sec); fprintf(fp, "last-packet-time %" PRI_tv_sec "\n", close_ts.tv_sec);
fprintf(fp, "dns-udp-queries-received-ipv4 %" PRIu64 "\n", counts.dns_udp_queries_received_ipv4); fprintf(fp, "dns-udp-queries-received-ipv4 %" PRIu64 "\n", counts.dns_udp_queries_received_ipv4);
fprintf(fp, "dns-udp-queries-received-ipv6 %" PRIu64 "\n", counts.dns_udp_queries_received_ipv6); fprintf(fp, "dns-udp-queries-received-ipv6 %" PRIu64 "\n", counts.dns_udp_queries_received_ipv6);
fprintf(fp, "dns-tcp-queries-received-ipv4 %" PRIu64 "\n", counts.dns_tcp_queries_received_ipv4); fprintf(fp, "dns-tcp-queries-received-ipv4 %" PRIu64 "\n", counts.dns_tcp_queries_received_ipv4);
@ -510,7 +510,7 @@ void rssm_save_sources(const char* sbuf)
FILE* fp; FILE* fp;
char* tbuf = 0; char* tbuf = 0;
int i; int i;
i = asprintf(&tbuf, "%s.%s.%06lu", sources_prefix, sbuf, (u_long)open_ts.tv_usec); i = asprintf(&tbuf, "%s.%s.%06" PRI_tv_usec, sources_prefix, sbuf, open_ts.tv_usec);
if (i < 1 || !tbuf) { if (i < 1 || !tbuf) {
logerr("asprintf: out of memory"); logerr("asprintf: out of memory");
return; return;
@ -535,7 +535,7 @@ void rssm_save_aggregated(const char* sbuf)
FILE* fp; FILE* fp;
char* tbuf = 0; char* tbuf = 0;
int i; int i;
i = asprintf(&tbuf, "%s.%s.%06lu", aggregated_prefix, sbuf, (u_long)open_ts.tv_usec); i = asprintf(&tbuf, "%s.%s.%06" PRI_tv_usec, aggregated_prefix, sbuf, open_ts.tv_usec);
if (i < 1 || !tbuf) { if (i < 1 || !tbuf) {
logerr("asprintf: out of memory"); logerr("asprintf: out of memory");
return; return;
@ -566,7 +566,7 @@ int rssm_close(my_bpftimeval ts)
struct tm tm; struct tm tm;
if (dont_fork_on_close) { if (dont_fork_on_close) {
gmtime_r((time_t*)&open_ts.tv_sec, &tm); gmtime_r(&open_ts.tv_sec, &tm);
strftime(sbuf, sizeof(sbuf), "%Y%m%d.%H%M%S", &tm); strftime(sbuf, sizeof(sbuf), "%Y%m%d.%H%M%S", &tm);
close_ts = ts; close_ts = ts;
rssm_save_counts(sbuf); rssm_save_counts(sbuf);
@ -596,7 +596,7 @@ int rssm_close(my_bpftimeval ts)
exit(0); exit(0);
} }
/* grandchild (2nd gen) continues */ /* grandchild (2nd gen) continues */
gmtime_r((time_t*)&open_ts.tv_sec, &tm); gmtime_r(&open_ts.tv_sec, &tm);
strftime(sbuf, sizeof(sbuf), "%Y%m%d.%H%M%S", &tm); strftime(sbuf, sizeof(sbuf), "%Y%m%d.%H%M%S", &tm);
close_ts = ts; close_ts = ts;
rssm_save_counts(sbuf); rssm_save_counts(sbuf);

View file

@ -290,8 +290,8 @@ void rzkeychange_submit_counts(void)
double elapsed = (double)clos_ts.tv_sec - (double)open_ts.tv_sec + 0.000001 * clos_ts.tv_usec - 0.000001 * open_ts.tv_usec; // NOSONAR double elapsed = (double)clos_ts.tv_sec - (double)open_ts.tv_sec + 0.000001 * clos_ts.tv_usec - 0.000001 * open_ts.tv_usec; // NOSONAR
int k; int k;
k = snprintf(qname, sizeof(qname), "%lu-%u-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 ".%s.%s.%s", k = snprintf(qname, sizeof(qname), "%" PRI_tv_sec "-%u-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 "-%" PRIu64 ".%s.%s.%s",
(u_long)open_ts.tv_sec, open_ts.tv_sec,
(unsigned int)(elapsed + 0.5), (unsigned int)(elapsed + 0.5),
counts.total, counts.total,
counts.dnskey, counts.dnskey,
@ -330,8 +330,8 @@ void rzkeychange_submit_counts(void)
if (*t == '.' || *t == ':') if (*t == '.' || *t == ':')
*t = '-'; *t = '-';
k = snprintf(qname, sizeof(qname), "%lu.%s.%hhx.%s.%s.%s.%s", k = snprintf(qname, sizeof(qname), "%" PRI_tv_sec ".%s.%hhx.%s.%s.%s.%s",
(u_long)open_ts.tv_sec, open_ts.tv_sec,
s, s,
key_tag_signals[i].flags, key_tag_signals[i].flags,
key_tag_signals[i].signal, key_tag_signals[i].signal,

View file

@ -220,7 +220,7 @@ void txtout_output(const char* descr, iaddr from, iaddr to, uint8_t proto, unsig
/* /*
* IP Stuff * IP Stuff
*/ */
fprintf(out, "%10ld.%06ld", (long)ts.tv_sec, (long)ts.tv_usec); fprintf(out, "%10" PRI_tv_sec ".%06" PRI_tv_usec, ts.tv_sec, ts.tv_usec);
fprintf(out, " %s %u", ia_str(from), sport); fprintf(out, " %s %u", ia_str(from), sport);
fprintf(out, " %s %u", ia_str(to), dport); fprintf(out, " %s %u", ia_str(to), dport);
fprintf(out, " %hhu", proto); fprintf(out, " %hhu", proto);

View file

@ -143,8 +143,8 @@ int main(int argc, char* argv[])
struct tm tm; struct tm tm;
gmtime_r(&start_time, &tm); gmtime_r(&start_time, &tm);
strftime(when, sizeof when, "%F %T", &tm); strftime(when, sizeof when, "%F %T", &tm);
fprintf(stderr, "Sleeping for %d seconds until %s UTC\n", fprintf(stderr, "Sleeping for %" PRI_tv_sec " seconds until %s UTC\n",
(int)(start_time - now.tv_sec), when); start_time - now.tv_sec, when);
sleep(start_time - now.tv_sec); sleep(start_time - now.tv_sec);
fprintf(stderr, "Awake.\n"); fprintf(stderr, "Awake.\n");
} }

View file

@ -49,6 +49,21 @@
#endif #endif
#endif #endif
/* Macros for printing timeval */
#include <inttypes.h>
#if _TIME_BITS == 64
#define PRI_tv_sec PRId64
#define PRI_tv_usec PRId64
#else
#ifdef __OpenBSD__
#define PRI_tv_sec PRId64
#define PRI_tv_usec "ld"
#else
#define PRI_tv_sec "ld"
#define PRI_tv_usec "ld"
#endif
#endif
/* /*
* setup MY_BPFTIMEVAL as the timeval structure that bpf packets * setup MY_BPFTIMEVAL as the timeval structure that bpf packets
* will be assoicated with packets from libpcap * will be assoicated with packets from libpcap

View file

@ -198,7 +198,7 @@ int dumper_open(my_bpftimeval ts)
gmtime_r((time_t*)&ts.tv_sec, &tm); gmtime_r((time_t*)&ts.tv_sec, &tm);
strftime(sbuf, 64, "%Y%m%d.%H%M%S", &tm); strftime(sbuf, 64, "%Y%m%d.%H%M%S", &tm);
if (asprintf(&dumpname, "%s.%s.%06ld%s", if (asprintf(&dumpname, "%s.%s.%06" PRI_tv_usec "%s",
dump_base, sbuf, dump_base, sbuf,
ts.tv_usec, dump_suffix ? dump_suffix : "") ts.tv_usec, dump_suffix ? dump_suffix : "")
< 0 < 0

View file

@ -192,7 +192,7 @@ void layer_pkt(u_char* user, const pcap_thread_packet_t* packet, const u_char* p
break; break;
} }
t = (time_t)firstpkt->pkthdr.ts.tv_sec; t = firstpkt->pkthdr.ts.tv_sec;
gmtime_r(&t, &tm); gmtime_r(&t, &tm);
strftime(when, sizeof(when), "%Y-%m-%d %T", &tm); strftime(when, sizeof(when), "%Y-%m-%d %T", &tm);
@ -207,7 +207,7 @@ void layer_pkt(u_char* user, const pcap_thread_packet_t* packet, const u_char* p
} }
if (vlan != MAX_VLAN) { if (vlan != MAX_VLAN) {
snprintf(descr, sizeof(descr), "[%zu] %s.%06ld [#%zd %s (vlan %u) %u] \\\n", snprintf(descr, sizeof(descr), "[%zu] %s.%06" PRI_tv_usec " [#%zd %s (vlan %u) %u] \\\n",
len, len,
when, when,
firstpkt->pkthdr.ts.tv_usec, firstpkt->pkthdr.ts.tv_usec,
@ -216,7 +216,7 @@ void layer_pkt(u_char* user, const pcap_thread_packet_t* packet, const u_char* p
vlan, vlan,
vlan); vlan);
} else { } else {
snprintf(descr, sizeof(descr), "[%zu] %s.%06ld [#%zd %s %u] \\\n", snprintf(descr, sizeof(descr), "[%zu] %s.%06" PRI_tv_usec " [#%zd %s %u] \\\n",
len, len,
when, when,
firstpkt->pkthdr.ts.tv_usec, firstpkt->pkthdr.ts.tv_usec,
@ -426,7 +426,7 @@ void dl_pkt(u_char* user, const struct pcap_pkthdr* hdr, const u_char* pkt, cons
struct tm tm; struct tm tm;
time_t t; time_t t;
t = (time_t)hdr->ts.tv_sec; t = hdr->ts.tv_sec;
gmtime_r(&t, &tm); gmtime_r(&t, &tm);
strftime(when, sizeof when, "%Y-%m-%d %T", &tm); strftime(when, sizeof when, "%Y-%m-%d %T", &tm);
if (vlan != MAX_VLAN) { if (vlan != MAX_VLAN) {
@ -437,7 +437,7 @@ void dl_pkt(u_char* user, const struct pcap_pkthdr* hdr, const u_char* pkt, cons
} else { } else {
viap = "\"some interface\""; viap = "\"some interface\"";
} }
snprintf(descr, sizeof(descr), "[%zu] %s.%06ld [#%zu %s %u] \\\n", snprintf(descr, sizeof(descr), "[%zu] %s.%06" PRI_tv_usec " [#%zu %s %u] \\\n",
len, when, hdr->ts.tv_usec, msgcount, viap, vlan); len, when, hdr->ts.tv_usec, msgcount, viap, vlan);
} else { } else {
descr[0] = '\0'; descr[0] = '\0';
@ -725,9 +725,9 @@ void network_pkt2(const char* descr, my_bpftimeval ts, const pcap_thread_packet_
tcpstate = tcpstate_find(from, to, sport, dport, ts.tv_sec); tcpstate = tcpstate_find(from, to, sport, dport, ts.tv_sec);
if (dumptrace >= 3) { if (dumptrace >= 3) {
fprintf(stderr, "%s: tcp pkt: %" PRIdMAX ".%06ld [%4zu] %15s -> ", fprintf(stderr, "%s: tcp pkt: %" PRI_tv_sec ".%06" PRI_tv_usec " [%4zu] %15s -> ",
ProgramName, ProgramName,
(intmax_t)ts.tv_sec, ts.tv_sec,
ts.tv_usec, ts.tv_usec,
len, len,
ia_str(from)); ia_str(from));
@ -1327,8 +1327,8 @@ void network_pkt(const char* descr, my_bpftimeval ts, unsigned pf,
tcpstate = tcpstate_find(from, to, sport, dport, ts.tv_sec); tcpstate = tcpstate_find(from, to, sport, dport, ts.tv_sec);
if (dumptrace >= 3) { if (dumptrace >= 3) {
fprintf(stderr, "%s: tcp pkt: %" PRIdMAX ".%06ld [%4zu] ", ProgramName, fprintf(stderr, "%s: tcp pkt: %" PRI_tv_sec ".%06" PRI_tv_usec " [%4zu] ", ProgramName,
(intmax_t)ts.tv_sec, ts.tv_usec, len); ts.tv_sec, ts.tv_usec, len);
fprintf(stderr, "%15s -> ", ia_str(from)); fprintf(stderr, "%15s -> ", ia_str(from));
fprintf(stderr, "%15s; ", ia_str(to)); fprintf(stderr, "%15s; ", ia_str(to));
if (tcpstate) if (tcpstate)

View file

@ -1,12 +1,13 @@
AC_DEFUN([AX_PCAP_THREAD_PCAP], [ AC_DEFUN([AX_PCAP_THREAD_PCAP], [
AC_HEADER_TIME AC_HEADER_TIME
AC_CHECK_LIB([pcap], [pcap_open_live], [], AC_MSG_ERROR([libpcap not found])) AC_CHECK_LIB([pcap], [pcap_open_live], [], [AC_MSG_ERROR([libpcap not found])])
AC_CHECK_HEADER([pcap/pcap.h], [], [AC_MSG_ERROR([libpcap header not found])]) AC_CHECK_HEADER([pcap/pcap.h], [], [AC_MSG_ERROR([libpcap header not found])])
AC_CHECK_HEADERS([endian.h sys/endian.h machine/endian.h sys/time.h]) AC_CHECK_HEADERS([endian.h sys/endian.h machine/endian.h sys/time.h])
AC_CHECK_FUNCS([pcap_create pcap_set_tstamp_precision pcap_set_immediate_mode]) AC_CHECK_FUNCS([pcap_create pcap_set_tstamp_precision pcap_set_immediate_mode])
AC_CHECK_FUNCS([pcap_set_tstamp_type pcap_setdirection sched_yield]) AC_CHECK_FUNCS([pcap_set_tstamp_type pcap_setdirection sched_yield])
AC_CHECK_FUNCS([pcap_open_offline_with_tstamp_precision pcap_activate]) AC_CHECK_FUNCS([pcap_open_offline_with_tstamp_precision pcap_activate])
AC_CHECK_TYPES([pcap_direction_t], [], [], [[#include <pcap/pcap.h>]]) AC_CHECK_TYPES([pcap_direction_t], [], [], [[#include <pcap/pcap.h>]])
AC_CHECK_DECL([DLT_LINUX_SLL2], [], [AC_MSG_ERROR([link-type DLT_LINUX_SLL2 not found, libpcap >= 1.10.0 required])], [[#include <pcap/pcap.h>]])
]) ])
AC_DEFUN([AX_PCAP_THREAD], [ AC_DEFUN([AX_PCAP_THREAD], [

View file

@ -105,10 +105,10 @@ extern "C" {
/* clang-format off */ /* clang-format off */
#define PCAP_THREAD_VERSION_STR "4.1.0" #define PCAP_THREAD_VERSION_STR "4.1.1"
#define PCAP_THREAD_VERSION_MAJOR 4 #define PCAP_THREAD_VERSION_MAJOR 4
#define PCAP_THREAD_VERSION_MINOR 1 #define PCAP_THREAD_VERSION_MINOR 1
#define PCAP_THREAD_VERSION_PATCH 0 #define PCAP_THREAD_VERSION_PATCH 1
#define PCAP_THREAD_DEFAULT_TIMEOUT 1000 #define PCAP_THREAD_DEFAULT_TIMEOUT 1000
#define PCAP_THREAD_DEFAULT_QUEUE_SIZE 64 #define PCAP_THREAD_DEFAULT_QUEUE_SIZE 64