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>