--- nono/configure.ac 2026/04/29 17:04:51 1.1.1.7 +++ nono/configure.ac 2026/04/29 17:05:04 1.1.1.9 @@ -127,65 +127,6 @@ AC_CHECK_HEADER_STDBOOL #AC_TYPE_UINT64_T #AC_TYPE_UINT8_T -# struct kevent のメンバ udata の型が互換性なく違う。 -# NetBSD では intptr_t(整数) だが、OSX では void* (ポインタ) なので、 -# 同一ソースコードでは回避できない。 -# Linux(Ubuntu) はどっちもパスするので後ろの void * のほうが使われる。 -# まあパスするんならどっちでもいいか。 -AC_MSG_CHECKING(whether kevent.udata is intptr_t) -old_CXXFLAGS="${CXXFLAGS}" -CXXFLAGS="${CXXFLAGS} -Wall -Werror" -AC_COMPILE_IFELSE([AC_LANG_PROGRAM( - [ - #include "confdefs.h" - #if defined(HAVE_SYS_TYPES_H) - #include - #endif - #if defined(HAVE_SYS_EVENT_H) - #include - #endif - #if defined(HAVE_KQUEUE_SYS_EVENT_H) - #include - #endif - ], [ - struct kevent kev; - kev.udata = (intptr_t)0; - (void)kev; - ])], - AC_MSG_RESULT([yes]) - AC_SUBST([KEVENT_UDATA_T], [intptr_t]), - AC_MSG_RESULT([no])) -CXXFLAGS="${old_CXXFLAGS}" - -AC_MSG_CHECKING(whether kevent.udata is void *) -old_CXXFLAGS="${CXXFLAGS}" -CXXFLAGS="${CXXFLAGS} -Wall -Werror" -AC_COMPILE_IFELSE([AC_LANG_PROGRAM( - [ - #include "confdefs.h" - #if defined(HAVE_SYS_TYPES_H) - #include - #endif - #if defined(HAVE_SYS_EVENT_H) - #include - #endif - #if defined(HAVE_KQUEUE_SYS_EVENT_H) - #include - #endif - ], [ - struct kevent kev; - kev.udata = (void *)0; - (void)kev; - ])], - AC_MSG_RESULT([yes]) - AC_SUBST([KEVENT_UDATA_T], ['void *']), - AC_MSG_RESULT([no])) -CXXFLAGS="${old_CXXFLAGS}" - -if test -z "$KEVENT_UDATA_T" ; then - AC_MSG_ERROR([kevent.udata is unknown type]) -fi - AC_MSG_CHECKING(for __builtin_assume) AC_TRY_COMPILE(, [ @@ -385,30 +326,54 @@ AC_TRY_COMPILE( AC_DEFINE([HAVE_ICONV_CONST]), AC_MSG_RESULT([no])) -# Select host network driver. -AC_MSG_CHECKING(for suitable host network driver) +# +# Network +# +AC_MSG_CHECKING(for AF_PACKET) +AC_TRY_COMPILE( + [ + #include + ], [ + AF_PACKET; + ], + AC_MSG_RESULT([yes]) + AC_DEFINE([HAVE_HOSTNET_AFPACKET]) + AC_SUBST([HOSTNET_AFPACKET], [yes]), + AC_MSG_RESULT([no])) + +AC_MSG_CHECKING(for tap(4)) case "${host_os}" in linux*) if test x"$ac_cv_header_linux_if_tun_h" = xyes; then - netdriver=tap + netdriver_tap=yes fi ;; openbsd*) # OpenBSD has no but supports tap(4). - netdriver=tap + netdriver_tap=yes ;; -esac -if test -z "$netdriver"; then + *) if test x"$ac_cv_header_net_if_tap_h" = xyes; then - netdriver=tap - elif test x"$ac_cv_header_net_bpf_h" = xyes; then - netdriver=bpf - else - netdriver=none + netdriver_tap=yes fi + ;; +esac +if test x"$netdriver_tap" = xyes; then + AC_MSG_RESULT([yes]) + AC_DEFINE([HAVE_HOSTNET_TAP]) + AC_SUBST([HOSTNET_TAP], [yes]) +else + AC_MSG_RESULT([no]) +fi + +AC_MSG_CHECKING(for bpf(4)) +if test x"$ac_cv_header_net_bpf_h" = xyes; then + AC_MSG_RESULT([yes]) + AC_DEFINE([HAVE_HOSTNET_BPF]) + AC_SUBST([HOSTNET_BPF], [yes]) +else + AC_MSG_RESULT([no]) fi -AC_MSG_RESULT([$netdriver]) -AC_SUBST([NETDRIVER], [$netdriver]) # libbsd on Linux AC_CHECK_LIB(c, getprogname, ,)