Boost.Asio based C++ library to implement parts of the UPnP standard.
This library is under development and the API will very likely change in a backward incompatible way.
The current functionality includes listing, creating and deleting of TCP and UDP port mappings on IGD (v1 and v2) devices.
If you have sources of CPPUPnP somewhere on your disk, simply set the
CPPUPnP_DIR
variable to point to that CPPUPnP's directory and call
find_package(CPPUPnP REQUIRED)
as is done in the
example/CMakeLists.txt
If you don't have CPPUPnP on your disk, have cmake download it prior to calling
find_package(CPPUPnP REQUIRED)
like so:
include(FetchContent)
fetchcontent_populate(CPPUPnP GIT_REPOSITORY <CPPUPnP-GIT-Repository>)
set(CPPUPnP_DIR ${CMAKE_BINARY_DIR}/cppupnp-src)
find_package(CPPUPnP REQUIRED)
Please have a look into .circleci/config.yml
UPnP standards
RFC6970
UPnP IGD "A Fox in the Hen House" (pdf)
Golang code that inspired this library