README.md 1.84 KB
Newer Older
Jens Georg's avatar
Jens Georg committed
1
# GUPnP
2

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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 consists of the following two libraries:

  * GSSDP implements resource discovery and announcement over SSDP.

  * GUPnP implements the UPnP specification: resource announcement and
    discovery, description, control, event notification, and presentation
    (GUPnP includes basic web server functionality through libsoup). GUPnP does
    not include helpers for construction or control of specific standardized
    resources (e.g. MediaServer); this is left for higher level libraries
    utilizing the GUPnP framework.

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.

Jens Georg's avatar
Jens Georg committed
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
GUPnP is free software released under the GNU LGPL version 2.1 or later.

## Building

GUPnP uses the meson build system. To build GUPnP, the simplest variant is
```
$ meson setup build
$ meson compile -C build
```

There are several options to customize the build, please see (meson_options.txt) for
a brief overview.

## Developer documentation

The developer documentation is available at https://gnome.pages.gitlab.gnome.org/gupnp/docs/

40
41
42
43
44
45
46
47
48
49
50
51

## Running the tests

The tests usually work on localhost (127.0.0.1 and ::1).

On start-up, the ests will check for a network device called "gupnp0". It it exists, it will
additonally use that for running the tests.

To create such a device you can use NetworkManager, for example:
```
$ nmcli c a ifname gupnp0 type dummy ipv4.method link-local ipv6.method link-local
```