diff --git a/aconfigure b/aconfigure index ff16f0039..78d68e128 100755 --- a/aconfigure +++ b/aconfigure @@ -6653,7 +6653,7 @@ UpnpInit2(NULL, 0); _ACEOF if ac_fn_c_try_link "$LINENO" then : - CFLAGS="$CFLAGS -DPJLIB_UTIL_HAS_UPNP=1 $UPNP_CFLAGS" + CFLAGS="$CFLAGS -DPJNATH_HAS_UPNP=1 $UPNP_CFLAGS" LDFLAGS="$LDFLAGS $UPNP_LDFLAGS $UPNP_LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } diff --git a/aconfigure.ac b/aconfigure.ac index e805ec1df..b6669b82c 100644 --- a/aconfigure.ac +++ b/aconfigure.ac @@ -605,7 +605,7 @@ AC_ARG_ENABLE(upnp, AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [UpnpInit2(NULL, 0);] )], - [ CFLAGS="$CFLAGS -DPJLIB_UTIL_HAS_UPNP=1 $UPNP_CFLAGS" + [ CFLAGS="$CFLAGS -DPJNATH_HAS_UPNP=1 $UPNP_CFLAGS" LDFLAGS="$LDFLAGS $UPNP_LDFLAGS $UPNP_LIBS" AC_MSG_RESULT(yes) ], diff --git a/pjlib-util/build/Makefile b/pjlib-util/build/Makefile index 5de43f13c..0fa645790 100644 --- a/pjlib-util/build/Makefile +++ b/pjlib-util/build/Makefile @@ -40,7 +40,7 @@ export PJLIB_UTIL_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ dns_dump.o dns_server.o getopt.o hmac_md5.o hmac_sha1.o \ http_client.o json.o md5.o pcap.o resolver.o scanner.o sha1.o \ srv_resolver.o string.o stun_simple.o \ - stun_simple_client.o upnp.o xml.o + stun_simple_client.o xml.o export PJLIB_UTIL_CFLAGS += $(_CFLAGS) export PJLIB_UTIL_CXXFLAGS += $(_CXXFLAGS) export PJLIB_UTIL_LDFLAGS += $(PJLIB_LDLIB) $(_LDFLAGS) diff --git a/pjlib-util/build/pjlib_util.vcxproj b/pjlib-util/build/pjlib_util.vcxproj index a7fa9e95b..88bc7cb90 100644 --- a/pjlib-util/build/pjlib_util.vcxproj +++ b/pjlib-util/build/pjlib_util.vcxproj @@ -750,7 +750,6 @@ - @@ -781,7 +780,6 @@ - diff --git a/pjlib-util/build/pjlib_util.vcxproj.filters b/pjlib-util/build/pjlib_util.vcxproj.filters index 13b643561..52fd9c12b 100644 --- a/pjlib-util/build/pjlib_util.vcxproj.filters +++ b/pjlib-util/build/pjlib_util.vcxproj.filters @@ -92,9 +92,6 @@ Source Files - - Source Files - @@ -181,8 +178,5 @@ Header Files - - Header Files - \ No newline at end of file diff --git a/pjlib-util/include/pjlib-util.h b/pjlib-util/include/pjlib-util.h index 4001d22fa..334e73c96 100644 --- a/pjlib-util/include/pjlib-util.h +++ b/pjlib-util/include/pjlib-util.h @@ -61,9 +61,6 @@ /* Old STUN */ #include -/* UPnP */ -#include - /* PCAP */ #include diff --git a/pjlib-util/include/pjlib-util/config.h b/pjlib-util/include/pjlib-util/config.h index 3fc7bf9dd..13aa6a3aa 100644 --- a/pjlib-util/include/pjlib-util/config.h +++ b/pjlib-util/include/pjlib-util/config.h @@ -238,18 +238,6 @@ #endif -/* ************************************************************************** - * UPnP - */ - -/* Default duration for searching UPnP Internet Gateway Devices (in seconds). - * Default: 5 seconds - */ -#ifndef PJ_UPNP_DEFAULT_SEARCH_TIME -# define PJ_UPNP_DEFAULT_SEARCH_TIME 5 -#endif - - /* ************************************************************************** * ENCRYPTION */ diff --git a/pjnath/build/Makefile b/pjnath/build/Makefile index 7e0e90e6f..bf3236e0a 100644 --- a/pjnath/build/Makefile +++ b/pjnath/build/Makefile @@ -40,7 +40,7 @@ export PJNATH_SRCDIR = ../src/pjnath export PJNATH_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ errno.o ice_session.o ice_strans.o nat_detect.o stun_auth.o \ stun_msg.o stun_msg_dump.o stun_session.o stun_sock.o \ - stun_transaction.o turn_session.o turn_sock.o + stun_transaction.o turn_session.o turn_sock.o upnp.o export PJNATH_CFLAGS += $(_CFLAGS) export PJNATH_CXXFLAGS += $(_CXXFLAGS) export PJNATH_LDFLAGS += $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS) diff --git a/pjnath/build/pjnath.vcxproj b/pjnath/build/pjnath.vcxproj index c17fb95cd..fdbeccad1 100644 --- a/pjnath/build/pjnath.vcxproj +++ b/pjnath/build/pjnath.vcxproj @@ -733,6 +733,7 @@ + @@ -755,6 +756,7 @@ + diff --git a/pjnath/build/pjnath.vcxproj.filters b/pjnath/build/pjnath.vcxproj.filters index aaa326302..feb951617 100644 --- a/pjnath/build/pjnath.vcxproj.filters +++ b/pjnath/build/pjnath.vcxproj.filters @@ -50,6 +50,9 @@ Source Files + + Source Files + @@ -94,6 +97,9 @@ Header Files + + Header Files + Doxygen Files diff --git a/pjnath/docs/doc_mainpage.h b/pjnath/docs/doc_mainpage.h index 202d1bc03..33b5bae75 100644 --- a/pjnath/docs/doc_mainpage.h +++ b/pjnath/docs/doc_mainpage.h @@ -76,8 +76,12 @@ PJNATH has the following features: draft-ietf-mmusic-ice-19.txt draft -In the future, more protocols will be implemented (such as UPnP IGD, and -SOCKS5). + - Universal Plug and Play (UPnP) control point implementation.\n + Universal Plug and Play (UPnP) Internet Gateway Device (IGD) Protocol + allows any local UPnP control point to retrieve the external IP address of + the device, and add or remove port mappings. By adding a port mapping, + a UPnP controller behind the IGD can enable traversal of the IGD from + an external address to an internal client.\n\n \section pjnath_organization_sec Library Organization @@ -88,9 +92,10 @@ The library provides the following main component groups: - \ref PJNATH_TURN\n\n - \ref PJNATH_ICE\n\n - \ref PJNATH_NAT_DETECT\n\n + - \ref PJNATH_UPNP\n\n -Apart from the \ref PJNATH_NAT_DETECT, each component group are further -divided into two functionalities: +Apart from the \ref PJNATH_NAT_DETECT and \ref PJNATH_UPNP, each component +group are further divided into two functionalities: - Transport objects\n The transport objects (such as STUN transport, TURN transport, and ICE diff --git a/pjnath/include/pjnath.h b/pjnath/include/pjnath.h index 39eaa9341..f8b86f66c 100644 --- a/pjnath/include/pjnath.h +++ b/pjnath/include/pjnath.h @@ -40,5 +40,8 @@ #include #include +/* UPnP */ +#include + #endif diff --git a/pjnath/include/pjnath/config.h b/pjnath/include/pjnath/config.h index 8a656c225..957cbd73e 100644 --- a/pjnath/include/pjnath/config.h +++ b/pjnath/include/pjnath/config.h @@ -573,6 +573,19 @@ PJ_VERSION_NUM_EXTRA) #endif + +/* ************************************************************************** + * UPnP + */ + +/* Default duration for searching UPnP Internet Gateway Devices (in seconds). + * Default: 5 seconds + */ +#ifndef PJ_UPNP_DEFAULT_SEARCH_TIME +# define PJ_UPNP_DEFAULT_SEARCH_TIME 5 +#endif + + /** * @} */ diff --git a/pjlib-util/include/pjlib-util/upnp.h b/pjnath/include/pjnath/upnp.h similarity index 98% rename from pjlib-util/include/pjlib-util/upnp.h rename to pjnath/include/pjnath/upnp.h index 322c4ab1a..c71692817 100644 --- a/pjlib-util/include/pjlib-util/upnp.h +++ b/pjnath/include/pjnath/upnp.h @@ -29,8 +29,7 @@ PJ_BEGIN_DECL /** - * @defgroup PJLIB_UTIL_UPNP Simple UPnP Client - * @ingroup PJ_PROTOCOLS + * @defgroup PJNATH_UPNP Simple UPnP Client * @brief A simple UPnP client implementation. * @{ * diff --git a/pjlib-util/src/pjlib-util/upnp.c b/pjnath/src/pjnath/upnp.c similarity index 99% rename from pjlib-util/src/pjlib-util/upnp.c rename to pjnath/src/pjnath/upnp.c index 2c61e4f8e..25e21acbe 100644 --- a/pjlib-util/src/pjlib-util/upnp.c +++ b/pjnath/src/pjnath/upnp.c @@ -15,8 +15,8 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include -#include +#include +#include #include #include #include @@ -25,7 +25,7 @@ #include #include -#if defined(PJLIB_UTIL_HAS_UPNP) && (PJLIB_UTIL_HAS_UPNP != 0) +#if defined(PJNATH_HAS_UPNP) && (PJNATH_HAS_UPNP != 0) #include #include @@ -560,7 +560,6 @@ PJ_DEF(pj_status_t) pj_upnp_init(const pj_upnp_init_param *param) unsigned short port; const char *ip_address6 = NULL; unsigned short port6 = 0; - pj_status_t status; if (upnp_mgr.initialized) return PJ_SUCCESS; @@ -914,4 +913,4 @@ PJ_DEF(pj_status_t)pj_upnp_del_port_mapping(const pj_sockaddr *mapped_addr) # pragma comment(lib, "libpthread") #endif -#endif /* PJLIB_UTIL_HAS_UPNP */ +#endif /* PJNATH_HAS_UPNP */ diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index 8bdf6c4f7..193b9053e 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -994,7 +994,7 @@ PJ_DEF(pj_status_t) pjsua_create(void) } -#if defined(PJLIB_UTIL_HAS_UPNP) && (PJLIB_UTIL_HAS_UPNP != 0) +#if defined(PJNATH_HAS_UPNP) && (PJNATH_HAS_UPNP != 0) /* UPnP callback. */ static void upnp_cb(pj_status_t status) { @@ -1202,7 +1202,7 @@ PJ_DEF(pj_status_t) pjsua_init( const pjsua_config *ua_cfg, goto on_error; } -#if defined(PJLIB_UTIL_HAS_UPNP) && (PJLIB_UTIL_HAS_UPNP != 0) +#if defined(PJNATH_HAS_UPNP) && (PJNATH_HAS_UPNP != 0) /* Initialize UPnP if enabled */ if (pjsua_var.ua_cfg.enable_upnp) { pj_upnp_init_param param; @@ -2085,7 +2085,7 @@ PJ_DEF(pj_status_t) pjsua_destroy2(unsigned flags) } } -#if defined(PJLIB_UTIL_HAS_UPNP) && (PJLIB_UTIL_HAS_UPNP != 0) +#if defined(PJNATH_HAS_UPNP) && (PJNATH_HAS_UPNP != 0) /* Deinitialize UPnP */ if (pjsua_var.ua_cfg.enable_upnp) { pj_upnp_deinit(); @@ -2444,7 +2444,7 @@ static pj_status_t create_sip_udp_sock(int af, } } -#if defined(PJLIB_UTIL_HAS_UPNP) && (PJLIB_UTIL_HAS_UPNP != 0) +#if defined(PJNATH_HAS_UPNP) && (PJNATH_HAS_UPNP != 0) else if (pjsua_var.ua_cfg.enable_upnp && pjsua_var.upnp_status == PJ_SUCCESS) { @@ -2961,7 +2961,7 @@ PJ_DEF(pj_status_t) pjsua_transport_close( pjsua_transport_id id, */ switch (tp_type) { case PJSIP_TRANSPORT_UDP: -#if defined(PJLIB_UTIL_HAS_UPNP) && (PJLIB_UTIL_HAS_UPNP != 0) +#if defined(PJNATH_HAS_UPNP) && (PJNATH_HAS_UPNP != 0) if (pjsua_var.ua_cfg.enable_upnp && pjsua_var.upnp_status == PJ_SUCCESS) { diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index c716d3704..96bf4e35a 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -542,7 +542,7 @@ static pj_status_t create_rtp_rtcp_sock(pjsua_call_media *call_med, break; #endif -#if defined(PJLIB_UTIL_HAS_UPNP) && (PJLIB_UTIL_HAS_UPNP != 0) +#if defined(PJNATH_HAS_UPNP) && (PJNATH_HAS_UPNP != 0) } else if ((!use_ipv6 || use_nat64) && pjsua_media_acc_is_using_upnp(call_med->call->acc_id) && pjsua_var.upnp_status == PJ_SUCCESS) @@ -3264,7 +3264,7 @@ pj_status_t pjsua_media_channel_deinit(pjsua_call_id call_id) pjsua_call_media *call_med = &call->media[mi]; if (call_med->use_upnp) { -#if defined(PJLIB_UTIL_HAS_UPNP) && (PJLIB_UTIL_HAS_UPNP != 0) +#if defined(PJNATH_HAS_UPNP) && (PJNATH_HAS_UPNP != 0) pj_upnp_del_port_mapping(&call_med->mapped_addr[0]); pj_upnp_del_port_mapping(&call_med->mapped_addr[1]); #endif