mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-07-28 17:53:04 +02:00
Merge #18077: net: Add NAT-PMP port forwarding support
a191e23b8e
doc: Add release notes (Hennadii Stepanov)ae749d12dd
doc: Add libnatpmp stuff (Hennadii Stepanov)e28f9be87a
ci: Add libnatpmp-dev package to some builds (Hennadii Stepanov)5a0185b6c9
gui: Add NAT-PMP network option (Hennadii Stepanov)a39f7336a3
net: Add -natpmp command line option (Hennadii Stepanov)28acffd9d5
net: Add NAT-PMP to port mapping loop (Hennadii Stepanov)a8d9f275d0
net: Add libnatpmp support (Hennadii Stepanov)58e8364dcd
gui: Apply port mapping changes on dialog exit (Hennadii Stepanov)cf151cc68c
scripted-diff: Rename UPnP stuff (Hennadii Stepanov)4e91b1e24d
net: Add flags for port mapping protocols (Hennadii Stepanov)8b50d1b5bb
net: Keep trying to use UPnP when -upnp=1 (Hennadii Stepanov)28e2961fd6
refactor: Replace magic number with named constant (Hennadii Stepanov)02ccf69dd6
refactor: Move port mapping code to its own module (Hennadii Stepanov) Pull request description: Close #11902 This PR is an alternative to: - #12288 - #15717 To compile with NAT-PMP support on Ubuntu [`libnatpmp-dev`](https://packages.ubuntu.com/source/bionic/libnatpmp) should be available. Log excerpt: ``` 2020-02-05T20:12:28Z [mapport] NAT-PMP: public address = 95.164.65.194 2020-02-05T20:12:28Z [mapport] AddLocal(95.164.65.194:18333,3) 2020-02-05T20:12:28Z [mapport] NAT-PMP: port mapping successful. ``` See: [`libnatpmp`](https://miniupnp.tuxfamily.org/libnatpmp.html) --- Some follow-ups are out of this PR's scope: - mention NAT-PMP library in the version message - ~integrate NAT-PMP into the GUI~ (already [added](https://github.com/bitcoin/bitcoin/pull/18077#issuecomment-589405068)) ACKs for top commit: laanwj: Tested and code review ACKa191e23b8e
Tree-SHA512: 10e19267c21bf30f20ff1abfc882d526049f0e790b95e12f109dc2bed7c0aef45de03eaf967f4e667e7509be04f1873a5c508087393d947205f3aab2ad6d7cf1
This commit is contained in:
47
configure.ac
47
configure.ac
@@ -143,6 +143,18 @@ AC_ARG_ENABLE([upnp-default],
|
||||
[use_upnp_default=$enableval],
|
||||
[use_upnp_default=no])
|
||||
|
||||
AC_ARG_WITH([natpmp],
|
||||
[AS_HELP_STRING([--with-natpmp],
|
||||
[enable NAT-PMP (default is yes if libnatpmp is found)])],
|
||||
[use_natpmp=$withval],
|
||||
[use_natpmp=auto])
|
||||
|
||||
AC_ARG_ENABLE([natpmp-default],
|
||||
[AS_HELP_STRING([--enable-natpmp-default],
|
||||
[if NAT-PMP is enabled, turn it on at startup (default is no)])],
|
||||
[use_natpmp_default=$enableval],
|
||||
[use_natpmp_default=no])
|
||||
|
||||
AC_ARG_ENABLE(tests,
|
||||
AS_HELP_STRING([--disable-tests],[do not compile tests (default is to compile)]),
|
||||
[use_tests=$enableval],
|
||||
@@ -1206,6 +1218,7 @@ if test "x$enable_fuzz" = "xyes"; then
|
||||
enable_wallet=no
|
||||
use_bench=no
|
||||
use_upnp=no
|
||||
use_natpmp=no
|
||||
use_zmq=no
|
||||
|
||||
AX_CHECK_PREPROC_FLAG([-DABORT_ON_FAILED_ASSUME],[[DEBUG_CPPFLAGS="$DEBUG_CPPFLAGS -DABORT_ON_FAILED_ASSUME"]],,[[$CXXFLAG_WERROR]])
|
||||
@@ -1303,6 +1316,13 @@ if test x$have_miniupnpc != xno; then
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Check for libnatpmp (optional).
|
||||
if test "x$use_natpmp" != xno; then
|
||||
AC_CHECK_HEADERS([natpmp.h],
|
||||
[AC_CHECK_LIB([natpmp], [initnatpmp], [NATPMP_LIBS=-lnatpmp], [have_natpmp=no])],
|
||||
[have_natpmp=no])
|
||||
fi
|
||||
|
||||
if test x$build_bitcoin_wallet$build_bitcoin_cli$build_bitcoin_tx$build_bitcoind$bitcoin_enable_qt$use_tests$use_bench = xnonononononono; then
|
||||
use_boost=no
|
||||
else
|
||||
@@ -1561,6 +1581,31 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Enable NAT-PMP support.
|
||||
AC_MSG_CHECKING([whether to build with support for NAT-PMP])
|
||||
if test "x$have_natpmp" = xno; then
|
||||
if test "x$use_natpmp" = xyes; then
|
||||
AC_MSG_ERROR([NAT-PMP requested but cannot be built. Use --without-natpmp])
|
||||
fi
|
||||
AC_MSG_RESULT([no])
|
||||
use_natpmp=no
|
||||
else
|
||||
if test "x$use_natpmp" != xno; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_MSG_CHECKING([whether to build with NAT-PMP enabled by default])
|
||||
use_natpmp=yes
|
||||
natpmp_setting=0
|
||||
if test "x$use_natpmp_default" != xno; then
|
||||
use_natpmp_default=yes
|
||||
natpmp_setting=1
|
||||
fi
|
||||
AC_MSG_RESULT($use_natpmp_default)
|
||||
AC_DEFINE_UNQUOTED([USE_NATPMP], [$natpmp_setting], [NAT-PMP support not compiled if undefined, otherwise value (0 or 1) determines default state])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl these are only used when qt is enabled
|
||||
BUILD_TEST_QT=""
|
||||
if test x$bitcoin_enable_qt != xno; then
|
||||
@@ -1707,6 +1752,7 @@ AC_SUBST(SQLITE_LIBS)
|
||||
AC_SUBST(TESTDEFS)
|
||||
AC_SUBST(MINIUPNPC_CPPFLAGS)
|
||||
AC_SUBST(MINIUPNPC_LIBS)
|
||||
AC_SUBST(NATPMP_LIBS)
|
||||
AC_SUBST(EVENT_LIBS)
|
||||
AC_SUBST(EVENT_PTHREADS_LIBS)
|
||||
AC_SUBST(ZMQ_LIBS)
|
||||
@@ -1794,6 +1840,7 @@ else
|
||||
fi
|
||||
echo " with bench = $use_bench"
|
||||
echo " with upnp = $use_upnp"
|
||||
echo " with natpmp = $use_natpmp"
|
||||
echo " use asm = $use_asm"
|
||||
echo " sanitizers = $use_sanitizers"
|
||||
echo " debug enabled = $enable_debug"
|
||||
|
Reference in New Issue
Block a user