miniupnp/minissdpd
Thomas Bernard 07cc6215b5 minissdpd/getifaddr.c: fix strncpy() call 2015-07-16 17:15:36 +02:00
..
.gitignore minissdpd/.gitignore: add listifaces 2014-02-06 10:53:52 +01:00
Changelog.txt minissdpd/testminissdpd.c: improve large buffer support 2015-05-27 10:48:05 +02:00
LICENSE 2014 => 2015 2015-01-20 14:12:10 +01:00
Makefile Use system default C compiler instead of hardcoding to gcc 2015-06-10 17:52:02 +08:00
README minissdpd/README: update README 2015-05-27 11:01:13 +02:00
README.fr minissdpd: Translate README in english 2013-08-19 18:48:59 +02:00
VERSION minissdpd: VERSION 1.2 => 1.3 2014-12-05 18:38:23 +01:00
asyncsendto.c minissdpd: clean up select(), fix non blocking write 2014-12-05 17:35:34 +01:00
asyncsendto.h minissdpd: clean up select(), fix non blocking write 2014-12-05 17:35:34 +01:00
codelength.h DECODELENGTH_READ 2015-07-15 18:11:27 +02:00
config.h Add setting for unix socket response buffer size 2015-05-26 11:50:14 -05:00
daemonize.c remove trailing whitespace from minissdpd 2012-02-29 17:52:48 -08:00
daemonize.h Rename all include guards to not clash with C99 (7.1.3 Reserved identifiers). 2012-09-20 17:52:51 -03:00
getifaddr.c minissdpd/getifaddr.c: fix strncpy() call 2015-07-16 17:15:36 +02:00
getifaddr.h minisspd: check that peer is from a LAN 2014-11-28 17:48:35 +01:00
getroute.c minissdpd/getroute.c: define SA_LEN in all situations 2014-12-01 10:31:13 +01:00
getroute.h minisspd: check that peer is from a LAN 2014-11-28 17:48:35 +01:00
ifacewatch.c minisspd: check that peer is from a LAN 2014-11-28 17:48:35 +01:00
ifacewatch.h minisspd: check that peer is from a LAN 2014-11-28 17:48:35 +01:00
listifaces.c fix realloc failure issues detected thanks to cppcheck 2015-02-08 10:23:22 +01:00
minissdpd.1 Replaced hyphens by minus in man pages 2011-10-09 17:50:09 +02:00
minissdpd.c fix minor typo 2015-05-27 15:31:49 +02:00
minissdpd.init.d.script Update minissdpd.init.d.script 2015-05-18 15:53:17 -05:00
minissdpdtypes.h minisspd: check that peer is from a LAN 2014-11-28 17:48:35 +01:00
openssdpsocket.c minisspd: check that peer is from a LAN 2014-11-28 17:48:35 +01:00
openssdpsocket.h minisspd: check that peer is from a LAN 2014-11-28 17:48:35 +01:00
testcodelength.c remove unused argument warning 2012-05-08 23:11:02 +02:00
testminissdpd.c minissdpd/testminissdpd.c: Better HexDump 2015-06-16 14:35:08 +02:00
upnputils.c minisspd: check that peer is from a LAN 2014-11-28 17:48:35 +01:00
upnputils.h minisspd: check that peer is from a LAN 2014-11-28 17:48:35 +01:00

README

 * MiniSSDPd - SSDP daemon

(c) Thomas Bernard
http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
https://github.com/miniupnp/miniupnp/

MiniSSDPd is a daemon that :
1 - keeps track of all UPnP devices announcing themselves on the network.
its database can be queried by local processes using a protocol based on
a unix socket. That enables local processes to quickly discover UPnP devices
without broadcasting SSDP message and waiting several seconds for a response.
2 - keeps a database of local UPnP devices hosted on the machine and
answering SSDP searchs on their behalf. It enables to run several UPnP devices,
like an IGD and a MediaServer, on the same machine.

to build, use GNU Make.


* protocol :

Connect to the unix socket.
Sent request, get response.
close unix socket connection.

* Request format :
1st byte : request type
		  1 - type
		  2 - USN (unique id)
		  3 - everything
		  4 - submit service (see below)
n bytes : string length : 1 byte if < 128 else the upper bit indicate that
one additional byte should be read, etc. (see codelength.h)
n bytes = string

Response format :
1st byte : number of services/devices
For each service/device :
URL :
  n bytes string length
  n bytes = Location string
ST:
  n bytes string length
  n bytes = type string
USN:
  n bytes string length
  n bytes = identifier string

request type 4 = submit service
1st byte  = 4
(k,n) bytes : length and string "ST" (service type)
(k,n) bytes : length and string "USN"
(k,n) bytes : length and string "Server"
(k,n) bytes : length and string "Location"
No answer