Convert pcap-dag from libdag to libdagconf
E.g. dag_config_init() vs dag_open().
Add libdagconf dependency
Change configure check for dag headers to use AC_CHECK_HEADERS()
diff --git a/configure b/configure
index a35105c..496aa9d 100755
--- a/configure
+++ b/configure
@@ -716,6 +716,7 @@
docdir
oldincludedir
includedir
+runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -814,6 +815,7 @@
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1066,6 +1068,15 @@
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1203,7 +1214,7 @@
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
+ libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -1356,6 +1367,7 @@
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -4097,7 +4109,7 @@
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -4143,7 +4155,7 @@
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -4167,7 +4179,7 @@
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -4212,7 +4224,7 @@
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -4236,7 +4248,7 @@
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -6771,12 +6783,8 @@
fi
-ac_cv_lbl_dag_api=no
if test "$want_dag" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we have DAG API headers" >&5
-$as_echo_n "checking whether we have DAG API headers... " >&6; }
-
# If necessary, set default paths for DAG API headers and libraries.
if test -z "$dag_root"; then
dag_root=/usr/local
@@ -6790,19 +6798,22 @@
dag_lib_dir="$dag_root/lib"
fi
- if test -z "$dag_tools_dir"; then
- dag_tools_dir="$dag_root/tools"
- fi
+ V_INCLS="$V_INCLS -I$dag_include_dir"
- if test -r $dag_include_dir/dagapi.h; then
- ac_cv_lbl_dag_api=yes
- fi
+ for ac_header in dagapi.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "dagapi.h" "ac_cv_header_dagapi_h" "$ac_includes_default"
+if test "x$ac_cv_header_dagapi_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DAGAPI_H 1
+_ACEOF
- if test "$ac_cv_lbl_dag_api" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes ($dag_include_dir)" >&5
-$as_echo "yes ($dag_include_dir)" >&6; }
+fi
- V_INCLS="$V_INCLS -I$dag_include_dir"
+done
+
+
+ if test "$ac_cv_header_dagapi_h" = yes; then
if test $V_PCAP != dag ; then
SSRC="$SSRC pcap-dag.c"
@@ -6991,7 +7002,7 @@
LDFLAGS=$saved_ldflags
- LIBS="$LIBS -ldag"
+ LIBS="$LIBS -ldag -ldagconf"
LDFLAGS="$LDFLAGS -L$dag_lib_dir"
if test "$dag_large_streams" = 1; then
@@ -7055,8 +7066,6 @@
$as_echo "#define HAVE_DAG_API 1" >>confdefs.h
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
if test "$V_PCAP" = dag; then
# User requested "dag" capture type but we couldn't
diff --git a/configure.ac b/configure.ac
index 7767f01..5fd1afa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1071,11 +1071,8 @@
dag_lib_dir=$withval
],[])
-ac_cv_lbl_dag_api=no
if test "$want_dag" != no; then
- AC_MSG_CHECKING([whether we have DAG API headers])
-
# If necessary, set default paths for DAG API headers and libraries.
if test -z "$dag_root"; then
dag_root=/usr/local
@@ -1089,18 +1086,11 @@
dag_lib_dir="$dag_root/lib"
fi
- if test -z "$dag_tools_dir"; then
- dag_tools_dir="$dag_root/tools"
- fi
+ V_INCLS="$V_INCLS -I$dag_include_dir"
- if test -r $dag_include_dir/dagapi.h; then
- ac_cv_lbl_dag_api=yes
- fi
+ AC_CHECK_HEADERS([dagapi.h])
- if test "$ac_cv_lbl_dag_api" = yes; then
- AC_MSG_RESULT([yes ($dag_include_dir)])
-
- V_INCLS="$V_INCLS -I$dag_include_dir"
+ if test "$ac_cv_header_dagapi_h" = yes; then
if test $V_PCAP != dag ; then
SSRC="$SSRC pcap-dag.c"
@@ -1122,7 +1112,7 @@
LDFLAGS=$saved_ldflags
- LIBS="$LIBS -ldag"
+ LIBS="$LIBS -ldag -ldagconf"
LDFLAGS="$LDFLAGS -L$dag_lib_dir"
if test "$dag_large_streams" = 1; then
@@ -1139,7 +1129,6 @@
AC_DEFINE(HAVE_DAG_API, 1, [define if you have the DAG API])
else
- AC_MSG_RESULT(no)
if test "$V_PCAP" = dag; then
# User requested "dag" capture type but we couldn't
diff --git a/pcap-dag.c b/pcap-dag.c
index 931f2f3..1e6b3da 100644
--- a/pcap-dag.c
+++ b/pcap-dag.c
@@ -41,6 +41,7 @@
#include "dagnew.h"
#include "dagapi.h"
#include "dagpci.h"
+#include "dag_config_api.h"
#include "pcap-dag.h"
@@ -185,6 +186,7 @@
int dag_timeout; /* timeout specified to pcap_open_live.
* Same as in linux above, introduce
* generally? */
+ dag_card_ref_t dag_ref; /* DAG Configuration/Status API card reference */
struct timeval required_select_timeout;
/* Timeout caller must use in event loops */
};
@@ -252,14 +254,14 @@
if(dag_detach_stream(p->fd, pd->dag_stream) < 0)
fprintf(stderr,"dag_detach_stream: %s\n", strerror(errno));
- if(p->fd != -1) {
- if(dag_close(p->fd) < 0)
- fprintf(stderr,"dag_close: %s\n", strerror(errno));
+ if(pd->dag_ref != NULL) {
+ dag_config_dispose(pd->dag_ref);
p->fd = -1;
+ pd->dag_ref = NULL;
}
delete_pcap_dag(p);
pcap_cleanup_live_common(p);
- /* Note: don't need to call close(p->fd) here as dag_close(p->fd) does this. */
+ /* Note: don't need to call close(p->fd) or dag_close(p->fd) as dag_config_dispose(pd->dag_ref) does this. */
}
static void
@@ -777,9 +779,15 @@
}
/* setup device parameters */
- if((p->fd = dag_open((char *)device)) < 0) {
+ if((pd->dag_ref = dag_config_init((char *)device)) == NULL) {
pcap_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
- errno, "dag_open %s", device);
+ errno, "dag_config_init %s", device);
+ goto fail;
+ }
+
+ if((p->fd = dag_config_get_card_fd(pd->dag_ref)) < 0) {
+ pcap_fmt_errmsg_for_errno(p->errbuf, PCAP_ERRBUF_SIZE,
+ errno, "dag_config_get_card_fd %s", device);
goto fail;
}
@@ -962,8 +970,7 @@
fprintf(stderr,"dag_detach_stream: %s\n", strerror(errno));
failclose:
- if (dag_close(p->fd) < 0)
- fprintf(stderr,"dag_close: %s\n", strerror(errno));
+ dag_config_dispose(pd->dag_ref);
delete_pcap_dag(p);
fail: