into psp-fb1.ntp.org:/a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-dev-libevent
bk: 4d324666YHSMYe97VoZ9dfcTAg-evw
## LIBOPTS_CHECK_NOBUILD works with Automake 1.10 now
AUTOMAKE_OPTIONS = foreign 1.10
- ACLOCAL_AMFLAGS = -I ../m4 -I libopts/m4
-
- AM_CPPFLAGS = \
- $(LIBEVENT_CPPFLAGS) \
- $(LIBOPTS_CFLAGS) \
- -I$(top_srcdir)/../include \
- -I$(top_srcdir)/../lib/isc/include \
- -I$(top_srcdir)/../lib/isc/nothreads/include \
- -I$(top_srcdir)/../lib/isc/unix/include \
- $(NULL)
-
- LDADD = version.o $(LIBOPTS_LDADD) $(LIBEVENT_LDADD) $(LIBM) ../libntp/libntp.a @LCRYPTO@
+ ACLOCAL_AMFLAGS = -I m4 -I libopts/m4
+
++#AM_CPPFLAGS = \
++# $(LIBEVENT_CPPFLAGS) \
++# $(LIBOPTS_CFLAGS) \
++# -I$(top_srcdir)/../include \
++# -I$(top_srcdir)/../lib/isc/include \
++# -I$(top_srcdir)/../lib/isc/nothreads/include \
++# -I$(top_srcdir)/../lib/isc/unix/include \
++# $(NULL)
++
+ CFLAGS = @CFLAGS_NTP@
+ AM_CPPFLAGS = @CPPFLAGS_NTP@
+
+ INCLUDES = $(LIBOPTS_CFLAGS)
+ INCLUDES += -I$(top_srcdir)/../include
+ INCLUDES += -I$(top_srcdir)/../lib/isc/include
+ INCLUDES += -I$(top_srcdir)/../lib/isc/nothreads/include
+ INCLUDES += -I$(top_srcdir)/../lib/isc/unix/include
+
-LDADD = $(LIBOPTS_LDADD)
++LDADD = version.o
++LDADD += $(LIBOPTS_LDADD)
++LDADD += $(LIBEVENT_LDADD)
+ LDADD += $(LIBM)
+ LDADD += ../libntp/libntp.a
+ LDADD += @LCRYPTO@
run_ag = cd $(srcdir) && env PATH="$(abs_builddir):$(PATH)" \
- autogen -L ../include --writable
+ autogen -L include --writable
+
+ EXTRA_PROGRAMS = sntp
if NTP_BINSUBDIR_IS_BIN
- bin_PROGRAMS = sntp
+ bin_PROGRAMS = @SNTP@
else
- sbin_PROGRAMS = sntp
+ sbin_PROGRAMS = @SNTP@
endif
- CLEANFILES = check-COPYRIGHT-submake
+ SUBDIRS = include
- SUBDIRS =
if NEED_LIBOPTS
SUBDIRS += libopts
endif
utilities.h \
$(NULL)
+DISTCLEANFILES = \
+ version.c \
+ $(NULL)
+
EXTRA_DIST = \
- $(srcdir)/autogen-version.def \
bincheck.mf \
$(srcdir)/COPYRIGHT \
deps-ver \
@: similarly always be outdated causing their rules to fire
@: each time they or a dependent is built.
- $(srcdir)/version: FRC
- @cd $(srcdir) \
- && test -f ../version \
- && ( cd .. && $(MAKE) version ) \
- && ( cmp -s version ../version || cp ../version version )
-
+# We probably need something about libevent, too
+version.o: $(sntp_OBJECTS) ../libntp/libntp.a Makefile $(top_srcdir)/version
+ env CSET=`cat $(top_srcdir)/version` ../$(top_builddir)/scripts/mkver sntp
+ $(COMPILE) -c version.c
+
+check-autogen-version.def: FRC
+ @cd $(srcdir) \
+ && test -r ../include/autogen-version.def \
+ && ( if cmp -s ../include/autogen-version.def autogen-version.def; \
+ then : ; \
+ else cp ../include/autogen-version.def autogen-version.def; \
+ echo "Installing new sntp/autogen-version.def file"; \
+ fi )
+
+$(srcdir)/autogen-version.def:
+ $(MAKE) check-autogen-version.def
+
- check-version.def: FRC
- @cd $(srcdir) \
- && test -r ../include/version.def \
- && ( if cmp -s ../include/version.def version.def; \
- then : ; \
- else cp ../include/version.def version.def; \
- echo "Installing new sntp/version.def file"; \
- fi )
-
- $(srcdir)/version.def:
- $(MAKE) check-version.def
-
- check-version.m4: FRC
- @cd $(srcdir) \
- && test -r ../version.m4 \
- && ( if cmp -s ../version.m4 version.m4; \
- then : ; \
- else cp ../version.m4 version.m4; \
- echo "Installing new sntp/version.m4 file"; \
- fi )
-
- $(srcdir)/version.m4:
- $(MAKE) check-version.m4
-
- check-version.texi: FRC
- @cd $(srcdir) \
- && test -r ../include/version.texi \
- && ( if cmp -s ../include/version.texi version.texi; \
- then : ; \
- else cp ../include/version.texi version.texi; \
- echo "Installing new sntp/version.texi file"; \
- fi )
-
- $(srcdir)/version.texi:
- $(MAKE) check-version.texi
+ built-sources-only: $(BUILT_SOURCES)
+ @: do-nothing action to avoid default SCCS get
+
+ # HMS: The next bit is still suboptimal. If bk is present but this NTP
+ # repo is not a bk repo, we'll get an error message from the prs command.
+ # Unfortunately, I haven't found the necessary magic to redirect this error
+ # output to /dev/null under ancient/unique shells like the one Ultrix uses.
+ # We'll also get an error if srcdir or version is unwritable.
+ $(srcdir)/version: FRC.version
+ -test -r $(srcdir)/../SCCS/s.ChangeSet && \
+ (bk version) >/dev/null 2>&1 && \
+ cd $(srcdir)/.. && \
+ x=`bk -R prs -hr+ -nd:I: ChangeSet` && \
+ y=`cat sntp/version 2>/dev/null` || true && \
+ case "$$x" in ''|$$y) ;; *) echo $$x > sntp/version ;; esac
+
+ $(srcdir)/m4/version.m4: $(srcdir)/../packageinfo.sh
+ TEMPDIR=`pwd` && export TEMPDIR && cd $(srcdir) && \
+ ../scripts/genver m4/version.m4
+
+ $(srcdir)/include/version.def: $(srcdir)/../packageinfo.sh
+ TEMPDIR=`pwd` && export TEMPDIR && cd $(srcdir) && \
+ ../scripts/genver include/version.def
+
+ $(srcdir)/include/version.texi: $(srcdir)/../packageinfo.sh
+ TEMPDIR=`pwd` && export TEMPDIR && cd $(srcdir) && \
+ ../scripts/genver include/version.texi
$(srcdir)/../COPYRIGHT:
cd .. && $(MAKE) COPYRIGHT-please
$(srcdir)/sntp-opts.h: $(srcdir)/sntp-opts.c
@: do-nothing action to avoid default SCCS get, .h built with .c
-
+
- $(srcdir)/sntp-opts.c: $(srcdir)/sntp-opts.def $(srcdir)/version.def $(srcdir)/../include/copyright.def
+ $(srcdir)/sntp-opts.c: $(srcdir)/sntp-opts.def $(srcdir)/include/version.def $(srcdir)/include/copyright.def
$(run_ag) sntp-opts.def
- $(srcdir)/sntp.1: $(srcdir)/sntp-opts.def $(srcdir)/version.def $(srcdir)/../include/copyright.def
+ $(srcdir)/sntp.1: $(srcdir)/sntp-opts.def $(srcdir)/include/version.def $(srcdir)/include/copyright.def
$(run_ag) -Tagman1.tpl -bsntp sntp-opts.def
$(srcdir)/sntp-opts.menu: $(srcdir)/sntp-opts.texi
@: do-nothing action to avoid default SCCS get, .menu built with .texi
-
+
- $(srcdir)/sntp-opts.texi: $(srcdir)/sntp-opts.def $(srcdir)/version.def $(srcdir)/../include/copyright.def
+ $(srcdir)/sntp-opts.texi: $(srcdir)/sntp-opts.def $(srcdir)/include/version.def $(srcdir)/include/copyright.def
$(run_ag) -Taginfo.tpl -DLEVEL=section sntp-opts.def
$(top_srcdir)/../scripts/check--help $@
*) enable_libopts_install=no ;;
esac
LIBOPTS_CHECK
+NTP_LIBEVENT_CHECK
- NTP_DIR_SEP
+ NTP_LIBNTP
# Checks for libraries.
- NTP_LIB_M
-
- case "$GCC" in
- yes)
- CFLAGS="$CFLAGS -Wall"
- # CFLAGS="$CFLAGS -Wcast-align"
- CFLAGS="$CFLAGS -Wcast-qual"
- # CFLAGS="$CFLAGS -Wconversion"
- # CFLAGS="$CFLAGS -Werror"
- # CFLAGS="$CFLAGS -Wextra"
- # CFLAGS="$CFLAGS -Wfloat-equal"
- CFLAGS="$CFLAGS -Wmissing-prototypes"
- CFLAGS="$CFLAGS -Wpointer-arith"
- CFLAGS="$CFLAGS -Wshadow"
- # CFLAGS="$CFLAGS -Wtraditional"
- # CFLAGS="$CFLAGS -Wwrite-strings"
- case "$ntp_cv_gcc_Winit_self" in
- yes)
- CFLAGS="$CFLAGS -Winit-self"
- esac
- case "$ntp_cv_gcc_Wstrict_overflow" in
- yes)
- CFLAGS="$CFLAGS -Wstrict-overflow"
- esac
- # -W[no-]strict-prototypes might be added by NTP_OPENSSL
- esac
-
- # [Bug 1628] On Solaris, we need -lxnet -lsocket. Generalize this to
- # avoid keying on the OS name: If we find socket functions in
- # libsocket, next try for them in libxnet without libsocket, if found,
- # list both. If we simply tested libxnet first, we would find the
- # functions there and never add libsocket. See also [Bug 660]
- # http://bugs.ntp.org/show_bug.cgi?id=660#c9
- saved_LIBS=$LIBS
- AC_SEARCH_LIBS([setsockopt], [socket])
- case "$ac_cv_search_setsockopt" in
- -lsocket)
- LIBS="$saved_LIBS"
- AC_SEARCH_LIBS([getsockopt], [xnet])
- case "$ac_cv_search_getsockopt" in
- -lxnet)
- LIBS="-lxnet -lsocket $saved_LIBS"
- ;;
- *)
- LIBS="-lsocket $saved_LIBS"
- ;;
- esac
- ;;
- esac
- AS_UNSET([saved_LIBS])
AC_SEARCH_LIBS([inet_pton], [nsl])
AC_SEARCH_LIBS([openlog], [gen syslog])
AC_CHECK_FUNC([inet_pton], [],
[AC_DEFINE([ISC_PLATFORM_NEEDPTON], [1], [ISC: provide inet_pton()])])
- AC_CACHE_CHECK(
- [struct sockaddr for sa_len],
- [isc_cv_platform_havesalen],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[
- #include <sys/types.h>
- #include <sys/socket.h>
- ]],
- [[
- extern struct sockaddr *ps;
- return ps->sa_len;
- ]]
- )],
- [isc_cv_platform_havesalen=yes],
- [isc_cv_platform_havesalen=no]
- )]
- )
- case "$isc_cv_platform_havesalen" in
- yes)
- AC_DEFINE([ISC_PLATFORM_HAVESALEN], [1],
- [struct sockaddr has sa_len?])
- esac
-
- AC_MSG_CHECKING([if we're including sntp debugging code])
- AC_ARG_ENABLE(
- [debugging],
- [AS_HELP_STRING(
- [--enable-debugging],
- [+ include sntp debugging code]
- )],
- [ans=$enableval],
- [ans=yes]
- )
- case "$ans" in
- yes)
- AC_DEFINE([DEBUG], [1], [Enable sntp debugging code?])
- esac
- AC_MSG_RESULT([$ans])
-
- AC_ARG_ENABLE(
- [ipv6],
- [AS_HELP_STRING(
- [--enable-ipv6],
- [s use IPv6?]
- )]
- )
-
- case "$enable_ipv6" in
- yes|''|autodetect)
- case "$host" in
- powerpc-ibm-aix4*)
- ;;
- *)
- AC_DEFINE([WANT_IPV6], [1], [configure --enable-ipv6])
- ;;
- esac
- ;;
- no)
- ;;
- esac
-
-
- AC_CACHE_CHECK(
- [for IPv6 structures],
- [isc_cv_found_ipv6],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- ]],
- [[
- struct sockaddr_in6 sin6;
- ]]
- )],
- [isc_cv_found_ipv6=yes],
- [isc_cv_found_ipv6=no]
- )]
- )
-
- #
- # See whether IPv6 support is provided via a Kame add-on.
- # This is done before other IPv6 linking tests so LIBS is properly set.
- #
- AC_MSG_CHECKING([for Kame IPv6 support])
- AC_ARG_WITH(
- [kame],
- [AS_HELP_STRING(
- [--with-kame],
- [- =/usr/local/v6]
- )],
- [use_kame="$withval"],
- [use_kame="no"]
- )
- case "$use_kame" in
- no)
- ;;
- yes)
- kame_path=/usr/local/v6
- ;;
- *)
- kame_path="$use_kame"
- ;;
- esac
- case "$use_kame" in
- no)
- AC_MSG_RESULT([no])
- ;;
- *)
- if test -f $kame_path/lib/libinet6.a; then
- AC_MSG_RESULT([$kame_path/lib/libinet6.a])
- LIBS="-L$kame_path/lib -linet6 $LIBS"
- else
- AC_MSG_ERROR([$kame_path/lib/libinet6.a not found.
-
- Please choose the proper path with the following command:
-
- configure --with-kame=PATH
- ])
- fi
- ;;
- esac
-
- #
- # Whether netinet6/in6.h is needed has to be defined in isc/platform.h.
- # Including it on Kame-using platforms is very bad, though, because
- # Kame uses #error against direct inclusion. So include it on only
- # the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.
- # This is done before the in6_pktinfo check because that's what
- # netinet6/in6.h is needed for.
- #
- case "$host" in
- *-bsdi4.[[01]]*)
- AC_DEFINE([ISC_PLATFORM_NEEDNETINET6IN6H], [1],
- [Do we need netinet6/in6.h?])
- isc_netinet6in6_hack="#include <netinet6/in6.h>"
- ;;
- *)
- isc_netinet6in6_hack=""
- ;;
- esac
-
- #
- # This is similar to the netinet6/in6.h issue.
- #
- case "$host" in
- *-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
- AC_DEFINE([ISC_PLATFORM_FIXIN6ISADDR], [1],
- [Do we need to fix in6isaddr?])
- isc_netinetin6_hack="#include <netinet/in6.h>"
- ;;
- *)
- isc_netinetin6_hack=""
- ;;
- esac
-
-
- case "$isc_cv_found_ipv6" in
- yes)
- AC_DEFINE([ISC_PLATFORM_HAVEIPV6], [1], [have IPv6?])
- AC_CACHE_CHECK(
- [for in6_pktinfo],
- [isc_cv_have_in6_pktinfo],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- $isc_netinetin6_hack
- $isc_netinet6in6_hack
- ]],
- [[
- struct in6_pktinfo xyzzy;
- ]]
- )],
- [isc_cv_have_in6_pktinfo=yes],
- [isc_cv_have_in6_pktinfo=no]
- )]
- )
- case "$isc_cv_have_in6_pktinfo" in
- yes)
- AC_DEFINE([ISC_PLATFORM_HAVEIN6PKTINFO], [1],
- [have struct in6_pktinfo?])
- esac
-
-
- # HMS: Use HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID instead?
- AC_CACHE_CHECK(
- [for sockaddr_in6.sin6_scope_id],
- [isc_cv_have_sin6_scope_id],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- $isc_netinetin6_hack
- $isc_netinet6in6_hack
- ]],
- [[
- struct sockaddr_in6 xyzzy;
- xyzzy.sin6_scope_id = 0;
- ]]
- )],
- [isc_cv_have_sin6_scope_id=yes],
- [isc_cv_have_sin6_scope_id=no]
- )]
- )
-
- case "$isc_cv_have_sin6_scope_id" in
- yes)
- AC_DEFINE([ISC_PLATFORM_HAVESCOPEID], [1], [sin6_scope_id?])
- esac
- esac
-
-
- # We need this check run even without isc_cv_found_ipv6=yes
-
- AC_CACHE_CHECK(
- [for in6addr_any],
- [isc_cv_have_in6addr_any],
- [AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- $isc_netinetin6_hack
- $isc_netinet6in6_hack
- ]],
- [[
- struct in6_addr in6;
- in6 = in6addr_any;
- ]]
- )],
- [isc_cv_have_in6addr_any=yes],
- [isc_cv_have_in6addr_any=no]
- )]
- )
-
- case "$isc_cv_have_in6addr_any" in
- no)
- AC_DEFINE([ISC_PLATFORM_NEEDIN6ADDRANY], [1], [missing in6addr_any?])
- esac
-
-
- AC_CACHE_CHECK(
- [for struct if_laddrconf],
- [isc_cv_struct_if_laddrconf],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[
- #include <sys/types.h>
- #include <net/if6.h>
- ]],
- [[
- struct if_laddrconf a;
- ]]
- )],
- [isc_cv_struct_if_laddrconf=yes],
- [isc_cv_struct_if_laddrconf=no]
- )]
- )
-
- case "$isc_cv_struct_if_laddrconf" in
- yes)
- AC_DEFINE([ISC_PLATFORM_HAVEIF_LADDRCONF], [1],
- [have struct if_laddrconf?])
- esac
-
- AC_CACHE_CHECK(
- [for struct if_laddrreq],
- isc_cv_struct_if_laddrreq,
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[
- #include <sys/types.h>
- #include <net/if6.h>
- ]],
- [[
- struct if_laddrreq a;
- ]]
- )],
- [isc_cv_struct_if_laddrreq=yes],
- [isc_cv_struct_if_laddrreq=no]
- )]
- )
-
- case "$isc_cv_struct_if_laddrreq" in
- yes)
- AC_DEFINE([ISC_PLATFORM_HAVEIF_LADDRREQ], [1],
- [have struct if_laddrreq?])
- esac
-
--
###
# Hacks
AC_PROG_CXX
NTP_GOOGLETEST
+case "$NEED_LIBEVENT_DIR" in
+ true)
+ AC_CONFIG_SUBDIRS([libevent])
+ ;;
+esac
+
AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES(build-libevent/Makefile)
+ AC_CONFIG_FILES([include/Makefile])
AC_CONFIG_FILES([tests/Makefile])
+
AC_OUTPUT
* Define the Sntp Option Environment
*/
static char const zPROGNAME[5] = "SNTP";
-static char const zUsageTitle[123] =
+static char const zUsageTitle[130] =
- "sntp - standard SNTP program - Ver. 4.2.7p114\n\
+ "sntp - standard SNTP program - Ver. 4.2.7p118\n\
-USAGE: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... hostname-or-IP ...\n";
+USAGE: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \\\n\
+\t\t[ hostname-or-IP ...]\n";
static char const zRcName[7] = ".ntprc";
static char const * const apzHomeList[3] = {
"$HOME",
* Enumeration of each option:
*/
typedef enum {
- INDEX_OPT_IPV4 = 0,
- INDEX_OPT_IPV6 = 1,
- INDEX_OPT_NORMALVERBOSE = 2,
- INDEX_OPT_KOD = 3,
- INDEX_OPT_SYSLOG = 4,
- INDEX_OPT_FILELOG = 5,
- INDEX_OPT_SETTOD = 6,
- INDEX_OPT_ADJTIME = 7,
- INDEX_OPT_BROADCAST = 8,
- INDEX_OPT_TIMEOUT = 9,
- INDEX_OPT_AUTHENTICATION = 10,
- INDEX_OPT_KEYFILE = 11,
- INDEX_OPT_VERSION = 12,
- INDEX_OPT_HELP = 13,
- INDEX_OPT_MORE_HELP = 14,
- INDEX_OPT_SAVE_OPTS = 15,
- INDEX_OPT_LOAD_OPTS = 16
+ INDEX_OPT_DEBUG_LEVEL = 0,
+ INDEX_OPT_SET_DEBUG_LEVEL = 1,
+ INDEX_OPT_IPV4 = 2,
+ INDEX_OPT_IPV6 = 3,
+ INDEX_OPT_KOD = 4,
+ INDEX_OPT_SYSLOG = 5,
+ INDEX_OPT_FILELOG = 6,
+ INDEX_OPT_STEPLIMIT = 7,
+ INDEX_OPT_SETTOD = 8,
+ INDEX_OPT_ADJTIME = 9,
+ INDEX_OPT_CONCURRENT = 10,
+ INDEX_OPT_BROADCAST = 11,
+ INDEX_OPT_TIMEOUT = 12,
+ INDEX_OPT_AUTHENTICATION = 13,
+ INDEX_OPT_KEYFILE = 14,
+ INDEX_OPT_UNPRIV_PORT = 15,
+ INDEX_OPT_VERSION = 16,
+ INDEX_OPT_HELP = 17,
+ INDEX_OPT_MORE_HELP = 18,
+ INDEX_OPT_SAVE_OPTS = 19,
+ INDEX_OPT_LOAD_OPTS = 20
} teOptIndex;
-#define OPTION_CT 17
+#define OPTION_CT 21
- #define SNTP_VERSION "4.2.7p114"
- #define SNTP_FULL_VERSION "sntp - standard SNTP program - Ver. 4.2.7p114"
+ #define SNTP_VERSION "4.2.7p118"
+ #define SNTP_FULL_VERSION "sntp - standard SNTP program - Ver. 4.2.7p118"
/*
* Interface defines for all options. Replace "n" with the UPPER_CASED
@exampleindent 0
@example
- sntp - standard SNTP program - Ver. 4.2.7p114
+ sntp - standard SNTP program - Ver. 4.2.7p118
-USAGE: sntp [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... hostname-or-IP ...
+USAGE: sntp [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... \
+ [ hostname-or-IP ...]
Flg Arg Option-Name Description
+ -d no debug-level Increase output debug message level
+ - may appear multiple times
+ -D Str set-debug-level Set the output debug message level
+ - may appear multiple times
-4 no ipv4 Force IPv4 DNS name resolution
- prohibits these options:
ipv6
<p><a name="index-sntp-usage-3"></a>
This is the automatically generated usage text for sntp:
- <pre class="example">sntp - standard SNTP program - Ver. 4.2.7p114
+ <pre class="example">sntp - standard SNTP program - Ver. 4.2.7p118
-USAGE: sntp [ -<flag> [<val>] | --<name>[{=| }<val>] ]... hostname-or-IP ...
+USAGE: sntp [ -<flag> [<val>] | --<name>[{=| }<val>] ]... \
+ [ hostname-or-IP ...]
Flg Arg Option-Name Description
+ -d no debug-level Increase output debug message level
+ - may appear multiple times
+ -D Str set-debug-level Set the output debug message level
+ - may appear multiple times
-4 no ipv4 Force IPv4 DNS name resolution
- prohibits these options:
ipv6