Annotation of embedaddon/miniupnpc/include/miniupnpc.h, revision 1.1
1.1 ! misho 1: /* $Id: miniupnpc.h,v 1.61 2022/10/21 21:15:02 nanard Exp $ */
! 2: /* vim: tabstop=4 shiftwidth=4 noexpandtab
! 3: * Project: miniupnp
! 4: * http://miniupnp.free.fr/ or https://miniupnp.tuxfamily.org/
! 5: * Author: Thomas Bernard
! 6: * Copyright (c) 2005-2022 Thomas Bernard
! 7: * This software is subjects to the conditions detailed
! 8: * in the LICENCE file provided within this distribution */
! 9: #ifndef MINIUPNPC_H_INCLUDED
! 10: #define MINIUPNPC_H_INCLUDED
! 11:
! 12: #include "miniupnpc_declspec.h"
! 13: #include "igd_desc_parse.h"
! 14: #include "upnpdev.h"
! 15:
! 16: /* error codes : */
! 17: #define UPNPDISCOVER_SUCCESS (0)
! 18: #define UPNPDISCOVER_UNKNOWN_ERROR (-1)
! 19: #define UPNPDISCOVER_SOCKET_ERROR (-101)
! 20: #define UPNPDISCOVER_MEMORY_ERROR (-102)
! 21:
! 22: /* versions : */
! 23: #define MINIUPNPC_VERSION "2.2.5"
! 24: #define MINIUPNPC_API_VERSION 17
! 25:
! 26: /* Source port:
! 27: Using "1" as an alias for 1900 for backwards compatibility
! 28: (presuming one would have used that for the "sameport" parameter) */
! 29: #define UPNP_LOCAL_PORT_ANY 0
! 30: #define UPNP_LOCAL_PORT_SAME 1
! 31:
! 32: #ifdef __cplusplus
! 33: extern "C" {
! 34: #endif
! 35:
! 36: /* Structures definitions : */
! 37: struct UPNParg { const char * elt; const char * val; };
! 38:
! 39: char *
! 40: simpleUPnPcommand(int, const char *, const char *,
! 41: const char *, struct UPNParg *,
! 42: int *);
! 43:
! 44: /* upnpDiscover()
! 45: * discover UPnP devices on the network.
! 46: * The discovered devices are returned as a chained list.
! 47: * It is up to the caller to free the list with freeUPNPDevlist().
! 48: * delay (in millisecond) is the maximum time for waiting any device
! 49: * response.
! 50: * If available, device list will be obtained from MiniSSDPd.
! 51: * Default path for minissdpd socket will be used if minissdpdsock argument
! 52: * is NULL.
! 53: * If multicastif is not NULL, it will be used instead of the default
! 54: * multicast interface for sending SSDP discover packets.
! 55: * If localport is set to UPNP_LOCAL_PORT_SAME(1) SSDP packets will be sent
! 56: * from the source port 1900 (same as destination port), if set to
! 57: * UPNP_LOCAL_PORT_ANY(0) system assign a source port, any other value will
! 58: * be attempted as the source port.
! 59: * "searchalltypes" parameter is useful when searching several types,
! 60: * if 0, the discovery will stop with the first type returning results.
! 61: * TTL should default to 2. */
! 62: MINIUPNP_LIBSPEC struct UPNPDev *
! 63: upnpDiscover(int delay, const char * multicastif,
! 64: const char * minissdpdsock, int localport,
! 65: int ipv6, unsigned char ttl,
! 66: int * error);
! 67:
! 68: MINIUPNP_LIBSPEC struct UPNPDev *
! 69: upnpDiscoverAll(int delay, const char * multicastif,
! 70: const char * minissdpdsock, int localport,
! 71: int ipv6, unsigned char ttl,
! 72: int * error);
! 73:
! 74: MINIUPNP_LIBSPEC struct UPNPDev *
! 75: upnpDiscoverDevice(const char * device, int delay, const char * multicastif,
! 76: const char * minissdpdsock, int localport,
! 77: int ipv6, unsigned char ttl,
! 78: int * error);
! 79:
! 80: MINIUPNP_LIBSPEC struct UPNPDev *
! 81: upnpDiscoverDevices(const char * const deviceTypes[],
! 82: int delay, const char * multicastif,
! 83: const char * minissdpdsock, int localport,
! 84: int ipv6, unsigned char ttl,
! 85: int * error,
! 86: int searchalltypes);
! 87:
! 88: /* parserootdesc() :
! 89: * parse root XML description of a UPnP device and fill the IGDdatas
! 90: * structure. */
! 91: MINIUPNP_LIBSPEC void parserootdesc(const char *, int, struct IGDdatas *);
! 92:
! 93: /* structure used to get fast access to urls
! 94: * controlURL: controlURL of the WANIPConnection
! 95: * ipcondescURL: url of the description of the WANIPConnection
! 96: * controlURL_CIF: controlURL of the WANCommonInterfaceConfig
! 97: * controlURL_6FC: controlURL of the WANIPv6FirewallControl
! 98: */
! 99: struct UPNPUrls {
! 100: char * controlURL;
! 101: char * ipcondescURL;
! 102: char * controlURL_CIF;
! 103: char * controlURL_6FC;
! 104: char * rootdescURL;
! 105: };
! 106:
! 107: /* UPNP_GetValidIGD() :
! 108: * return values :
! 109: * 0 = NO IGD found
! 110: * 1 = A valid connected IGD has been found
! 111: * 2 = A valid IGD has been found but it reported as
! 112: * not connected
! 113: * 3 = an UPnP device has been found but was not recognized as an IGD
! 114: *
! 115: * In any non zero return case, the urls and data structures
! 116: * passed as parameters are set. Donc forget to call FreeUPNPUrls(urls) to
! 117: * free allocated memory.
! 118: */
! 119: MINIUPNP_LIBSPEC int
! 120: UPNP_GetValidIGD(struct UPNPDev * devlist,
! 121: struct UPNPUrls * urls,
! 122: struct IGDdatas * data,
! 123: char * lanaddr, int lanaddrlen);
! 124:
! 125: /* UPNP_GetIGDFromUrl()
! 126: * Used when skipping the discovery process.
! 127: * When succeding, urls, data, and lanaddr arguments are set.
! 128: * return value :
! 129: * 0 - Not ok
! 130: * 1 - OK */
! 131: MINIUPNP_LIBSPEC int
! 132: UPNP_GetIGDFromUrl(const char * rootdescurl,
! 133: struct UPNPUrls * urls,
! 134: struct IGDdatas * data,
! 135: char * lanaddr, int lanaddrlen);
! 136:
! 137: MINIUPNP_LIBSPEC void
! 138: GetUPNPUrls(struct UPNPUrls *, struct IGDdatas *,
! 139: const char *, unsigned int);
! 140:
! 141: MINIUPNP_LIBSPEC void
! 142: FreeUPNPUrls(struct UPNPUrls *);
! 143:
! 144: /* return 0 or 1 */
! 145: MINIUPNP_LIBSPEC int UPNPIGD_IsConnected(struct UPNPUrls *, struct IGDdatas *);
! 146:
! 147:
! 148: #ifdef __cplusplus
! 149: }
! 150: #endif
! 151:
! 152: #endif
! 153:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>