Cpp Upnp – UPnP C++ library using Boost.Asio


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.

Build instructions

Include in your project

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

If you don’t have CPPUPnP on your disk, have cmake download it prior to calling
find_package(CPPUPnP REQUIRED) like so:

fetchcontent_populate(CPPUPnP GIT_REPOSITORY <CPPUPnP-GIT-Repository>)
set(CPPUPnP_DIR ${CMAKE_BINARY_DIR}/cppupnp-src)
find_package(CPPUPnP REQUIRED)

Build examples and tests

Please have a look into .circleci/config.yml

Useful links/documents

UPnP standards
UPnP IGD “A Fox in the Hen House” (pdf)
Golang code that inspired this library

Read more here: Source link