GUPnP is an object-oriented open source framework for creating UPnP devices and control points, written in C using GObject and libsoup. The GUPnP API is intended to be easy to use, efficient and flexible.
The GUPnP framework was born out of frustration with libupnp and its mess of threads. GUPnP is entirely single-threaded (though asynchronous), integrates with the GLib main loop, and provides the same set of features as libupnp while hiding most of the UPnP internals through an elegant object-oriented design.