File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / miniupnpc / include / miniupnpc.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Sep 27 11:21:37 2023 UTC (12 months ago) by misho
Branches: miniupnpc, MAIN
CVS tags: v2_2_5p0, HEAD
Version 2.2.5p0

    1: /* $Id: miniupnpc.h,v 1.1.1.1 2023/09/27 11:21:37 misho 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>