1: * MiniSSDPd - SSDP daemon
2:
3: (c) Thomas Bernard
4: http://miniupnp.free.fr/ or https://miniupnp.tuxfamily.org/
5: https://github.com/miniupnp/miniupnp/
6:
7: MiniSSDPd is a daemon that :
8: 1 - keeps track of all UPnP devices announcing themselves on the network.
9: its database can be queried by local processes using a protocol based on
10: a unix socket. That enables local processes to quickly discover UPnP devices
11: without broadcasting SSDP message and waiting several seconds for a response.
12: 2 - keeps a database of local UPnP devices hosted on the machine and
13: answering SSDP searchs on their behalf. It enables to run several UPnP devices,
14: like an IGD and a MediaServer, on the same machine.
15:
16: to build, use GNU Make.
17:
18:
19: * protocol :
20:
21: Connect to the unix socket.
22: Sent request, get response.
23: close unix socket connection.
24:
25: * Request format :
26: 1st byte : request type
27: 0 - version
28: 1 - type
29: 2 - USN (unique id)
30: 3 - everything
31: 4 - submit service (see below)
32: 5 - switch connection to notification mode
33: n bytes : string length : 1 byte if < 128 else the upper bit indicate that
34: one additional byte should be read, etc. (see codelength.h)
35: n bytes = string
36:
37: Response format :
38:
39: request type 0 (version) :
40: n bytes string length
41: n bytes = version string
42:
43: request type 1 / 2 / 3 / 5 :
44: 1st byte : number of services/devices, from 0 to 254.
45: 255 is a special value, see below
46: For each service/device :
47: URL :
48: n bytes string length
49: n bytes = Location string
50: ST:
51: n bytes string length
52: n bytes = type string
53: USN:
54: n bytes string length
55: n bytes = identifier string
56:
57: if the 1st byte is 255, the format is as follows :
58: 1st byte = 255
59: 2nd byte = notification type (1=NEW, 2=UPDATE, 3=REMOVE)
60: 3rd byte = number of services/devices, from 0 to 255.
61:
62:
63: request type 4 = submit service
64: 1st byte = 4
65: (k,n) bytes : length and string "ST" (service type)
66: (k,n) bytes : length and string "USN"
67: (k,n) bytes : length and string "Server"
68: (k,n) bytes : length and string "Location"
69: No answer
70:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>