mirror of
https://github.com/transmission/transmission
synced 2024-12-23 16:24:02 +00:00
93 lines
2.6 KiB
C
93 lines
2.6 KiB
C
|
/* $Id: miniupnpc.h,v 1.15 2007/10/16 15:07:32 nanard Exp $ */
|
||
|
/* Project: miniupnp
|
||
|
* http://miniupnp.free.fr/
|
||
|
* Author: Thomas Bernard
|
||
|
* Copyright (c) 2005-2006 Thomas Bernard
|
||
|
* This software is subjects to the conditions detailed
|
||
|
* in the LICENCE file provided within this distribution */
|
||
|
#ifndef __MINIUPNPC_H__
|
||
|
#define __MINIUPNPC_H__
|
||
|
|
||
|
#include "declspec.h"
|
||
|
#include "igd_desc_parse.h"
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
struct UPNParg { const char * elt; const char * val; };
|
||
|
|
||
|
int simpleUPnPcommand(int, const char *, const char *,
|
||
|
const char *, struct UPNParg *,
|
||
|
char *, int *);
|
||
|
|
||
|
struct UPNPDev {
|
||
|
struct UPNPDev * pNext;
|
||
|
char * descURL;
|
||
|
char * st;
|
||
|
char buffer[2];
|
||
|
};
|
||
|
|
||
|
/* discover UPnP devices on the network */
|
||
|
LIBSPEC struct UPNPDev * upnpDiscover(int delay, const char * multicastif);
|
||
|
/* free returned list from above function */
|
||
|
LIBSPEC void freeUPNPDevlist(struct UPNPDev * devlist);
|
||
|
|
||
|
LIBSPEC void parserootdesc(const char *, int, struct IGDdatas *);
|
||
|
|
||
|
/* structure used to get fast access to urls
|
||
|
* controlURL: controlURL of the WANIPConnection
|
||
|
* ipcondescURL: url of the description of the WANIPConnection
|
||
|
* controlURL_CIF: controlURL of the WANCOmmonInterfaceConfig
|
||
|
*/
|
||
|
struct UPNPUrls {
|
||
|
char * controlURL;
|
||
|
char * ipcondescURL;
|
||
|
char * controlURL_CIF;
|
||
|
};
|
||
|
|
||
|
/* UPNP_GetValidIGD() :
|
||
|
* return values :
|
||
|
* 0 = NO IGD found
|
||
|
* 1 = A valid connected IGD has been found
|
||
|
* 2 = A valid IGD has been found but it reported as
|
||
|
* not connected
|
||
|
* 3 = an UPnP device has been found but was not recognized as an IGD
|
||
|
*
|
||
|
* In any non zero return case, the urls and data structures
|
||
|
* passed as parameters are set. Donc forget to call FreeUPNPUrls(urls) to
|
||
|
* free allocated memory.
|
||
|
*/
|
||
|
LIBSPEC int
|
||
|
UPNP_GetValidIGD(struct UPNPDev * devlist,
|
||
|
struct UPNPUrls * urls,
|
||
|
struct IGDdatas * data,
|
||
|
char * lanaddr, int lanaddrlen);
|
||
|
|
||
|
/* UPNP_GetIGDFromUrl()
|
||
|
* Used when skipping the discovery process.
|
||
|
* return value :
|
||
|
* 0 - Not ok
|
||
|
* 1 - OK */
|
||
|
LIBSPEC int
|
||
|
UPNP_GetIGDFromUrl(const char * rootdescurl,
|
||
|
struct UPNPUrls * urls,
|
||
|
struct IGDdatas * data,
|
||
|
char * lanaddr, int lanaddrlen);
|
||
|
|
||
|
LIBSPEC void GetUPNPUrls(struct UPNPUrls *, struct IGDdatas *, const char *);
|
||
|
|
||
|
LIBSPEC void FreeUPNPUrls(struct UPNPUrls *);
|
||
|
|
||
|
/* Reads data from the specified socket.
|
||
|
* Returns the number of bytes read if successful, zero if no bytes were
|
||
|
* read or if we timed out. Returns negative if there was an error. */
|
||
|
int ReceiveData(int socket, char * data, int length, int timeout);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
|