File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / miniupnpc / upnpcommands.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Jul 22 00:36:10 2013 UTC (10 years, 10 months ago) by misho
Branches: miniupnpc, elwix, MAIN
CVS tags: v1_8p0, v1_8, HEAD
1.8

    1: /* $Id: upnpcommands.h,v 1.1.1.2 2013/07/22 00:36:10 misho Exp $ */
    2: /* Miniupnp project : http://miniupnp.free.fr/
    3:  * Author : Thomas Bernard
    4:  * Copyright (c) 2005-2011 Thomas Bernard
    5:  * This software is subject to the conditions detailed in the
    6:  * LICENCE file provided within this distribution */
    7: #ifndef UPNPCOMMANDS_H_INCLUDED
    8: #define UPNPCOMMANDS_H_INCLUDED
    9: 
   10: #include "upnpreplyparse.h"
   11: #include "portlistingparse.h"
   12: #include "declspec.h"
   13: #include "miniupnpctypes.h"
   14: 
   15: /* MiniUPnPc return codes : */
   16: #define UPNPCOMMAND_SUCCESS (0)
   17: #define UPNPCOMMAND_UNKNOWN_ERROR (-1)
   18: #define UPNPCOMMAND_INVALID_ARGS (-2)
   19: #define UPNPCOMMAND_HTTP_ERROR (-3)
   20: 
   21: #ifdef __cplusplus
   22: extern "C" {
   23: #endif
   24: 
   25: LIBSPEC UNSIGNED_INTEGER
   26: UPNP_GetTotalBytesSent(const char * controlURL,
   27: 					const char * servicetype);
   28: 
   29: LIBSPEC UNSIGNED_INTEGER
   30: UPNP_GetTotalBytesReceived(const char * controlURL,
   31: 						const char * servicetype);
   32: 
   33: LIBSPEC UNSIGNED_INTEGER
   34: UPNP_GetTotalPacketsSent(const char * controlURL,
   35: 					const char * servicetype);
   36: 
   37: LIBSPEC UNSIGNED_INTEGER
   38: UPNP_GetTotalPacketsReceived(const char * controlURL,
   39: 					const char * servicetype);
   40: 
   41: /* UPNP_GetStatusInfo()
   42:  * status and lastconnerror are 64 byte buffers
   43:  * Return values :
   44:  * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR
   45:  * or a UPnP Error code */
   46: LIBSPEC int
   47: UPNP_GetStatusInfo(const char * controlURL,
   48: 			       const char * servicetype,
   49: 				   char * status,
   50: 				   unsigned int * uptime,
   51:                    char * lastconnerror);
   52: 
   53: /* UPNP_GetConnectionTypeInfo()
   54:  * argument connectionType is a 64 character buffer
   55:  * Return Values :
   56:  * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR
   57:  * or a UPnP Error code */
   58: LIBSPEC int
   59: UPNP_GetConnectionTypeInfo(const char * controlURL,
   60:                            const char * servicetype,
   61: 						   char * connectionType);
   62: 
   63: /* UPNP_GetExternalIPAddress() call the corresponding UPNP method.
   64:  * if the third arg is not null the value is copied to it.
   65:  * at least 16 bytes must be available
   66:  *
   67:  * Return values :
   68:  * 0 : SUCCESS
   69:  * NON ZERO : ERROR Either an UPnP error code or an unknown error.
   70:  *
   71:  * possible UPnP Errors :
   72:  * 402 Invalid Args - See UPnP Device Architecture section on Control.
   73:  * 501 Action Failed - See UPnP Device Architecture section on Control. */
   74: LIBSPEC int
   75: UPNP_GetExternalIPAddress(const char * controlURL,
   76:                           const char * servicetype,
   77:                           char * extIpAdd);
   78: 
   79: /* UPNP_GetLinkLayerMaxBitRates()
   80:  * call WANCommonInterfaceConfig:1#GetCommonLinkProperties
   81:  *
   82:  * return values :
   83:  * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR
   84:  * or a UPnP Error Code. */
   85: LIBSPEC int
   86: UPNP_GetLinkLayerMaxBitRates(const char* controlURL,
   87: 							const char* servicetype,
   88: 							unsigned int * bitrateDown,
   89: 							unsigned int * bitrateUp);
   90: 
   91: /* UPNP_AddPortMapping()
   92:  * if desc is NULL, it will be defaulted to "libminiupnpc"
   93:  * remoteHost is usually NULL because IGD don't support it.
   94:  *
   95:  * Return values :
   96:  * 0 : SUCCESS
   97:  * NON ZERO : ERROR. Either an UPnP error code or an unknown error.
   98:  *
   99:  * List of possible UPnP errors for AddPortMapping :
  100:  * errorCode errorDescription (short) - Description (long)
  101:  * 402 Invalid Args - See UPnP Device Architecture section on Control.
  102:  * 501 Action Failed - See UPnP Device Architecture section on Control.
  103:  * 715 WildCardNotPermittedInSrcIP - The source IP address cannot be
  104:  *                                   wild-carded
  105:  * 716 WildCardNotPermittedInExtPort - The external port cannot be wild-carded
  106:  * 718 ConflictInMappingEntry - The port mapping entry specified conflicts
  107:  *                     with a mapping assigned previously to another client
  108:  * 724 SamePortValuesRequired - Internal and External port values
  109:  *                              must be the same
  110:  * 725 OnlyPermanentLeasesSupported - The NAT implementation only supports
  111:  *                  permanent lease times on port mappings
  112:  * 726 RemoteHostOnlySupportsWildcard - RemoteHost must be a wildcard
  113:  *                             and cannot be a specific IP address or DNS name
  114:  * 727 ExternalPortOnlySupportsWildcard - ExternalPort must be a wildcard and
  115:  *                                        cannot be a specific port value */
  116: LIBSPEC int
  117: UPNP_AddPortMapping(const char * controlURL, const char * servicetype,
  118:                     const char * extPort,
  119: 				    const char * inPort,
  120: 					const char * inClient,
  121: 					const char * desc,
  122:                     const char * proto,
  123:                     const char * remoteHost,
  124:                     const char * leaseDuration);
  125: 
  126: /* UPNP_DeletePortMapping()
  127:  * Use same argument values as what was used for AddPortMapping().
  128:  * remoteHost is usually NULL because IGD don't support it.
  129:  * Return Values :
  130:  * 0 : SUCCESS
  131:  * NON ZERO : error. Either an UPnP error code or an undefined error.
  132:  *
  133:  * List of possible UPnP errors for DeletePortMapping :
  134:  * 402 Invalid Args - See UPnP Device Architecture section on Control.
  135:  * 714 NoSuchEntryInArray - The specified value does not exist in the array */
  136: LIBSPEC int
  137: UPNP_DeletePortMapping(const char * controlURL, const char * servicetype,
  138:                        const char * extPort, const char * proto,
  139:                        const char * remoteHost);
  140: 
  141: /* UPNP_GetPortMappingNumberOfEntries()
  142:  * not supported by all routers */
  143: LIBSPEC int
  144: UPNP_GetPortMappingNumberOfEntries(const char* controlURL,
  145:                                    const char* servicetype,
  146:                                    unsigned int * num);
  147: 
  148: /* UPNP_GetSpecificPortMappingEntry()
  149:  *    retrieves an existing port mapping
  150:  * params :
  151:  *  in   extPort
  152:  *  in   proto
  153:  *  out  intClient (16 bytes)
  154:  *  out  intPort (6 bytes)
  155:  *  out  desc (80 bytes)
  156:  *  out  enabled (4 bytes)
  157:  *  out  leaseDuration (16 bytes)
  158:  *
  159:  * return value :
  160:  * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR
  161:  * or a UPnP Error Code. */
  162: LIBSPEC int
  163: UPNP_GetSpecificPortMappingEntry(const char * controlURL,
  164:                                  const char * servicetype,
  165:                                  const char * extPort,
  166:                                  const char * proto,
  167:                                  char * intClient,
  168:                                  char * intPort,
  169:                                  char * desc,
  170:                                  char * enabled,
  171:                                  char * leaseDuration);
  172: 
  173: /* UPNP_GetGenericPortMappingEntry()
  174:  * params :
  175:  *  in   index
  176:  *  out  extPort (6 bytes)
  177:  *  out  intClient (16 bytes)
  178:  *  out  intPort (6 bytes)
  179:  *  out  protocol (4 bytes)
  180:  *  out  desc (80 bytes)
  181:  *  out  enabled (4 bytes)
  182:  *  out  rHost (64 bytes)
  183:  *  out  duration (16 bytes)
  184:  *
  185:  * return value :
  186:  * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR
  187:  * or a UPnP Error Code.
  188:  *
  189:  * Possible UPNP Error codes :
  190:  * 402 Invalid Args - See UPnP Device Architecture section on Control.
  191:  * 713 SpecifiedArrayIndexInvalid - The specified array index is out of bounds
  192:  */
  193: LIBSPEC int
  194: UPNP_GetGenericPortMappingEntry(const char * controlURL,
  195:                                 const char * servicetype,
  196: 								const char * index,
  197: 								char * extPort,
  198: 								char * intClient,
  199: 								char * intPort,
  200: 								char * protocol,
  201: 								char * desc,
  202: 								char * enabled,
  203: 								char * rHost,
  204: 								char * duration);
  205: 
  206: /* UPNP_GetListOfPortMappings()      Available in IGD v2
  207:  *
  208:  *
  209:  * Possible UPNP Error codes :
  210:  * 606 Action not Authorized
  211:  * 730 PortMappingNotFound - no port mapping is found in the specified range.
  212:  * 733 InconsistantParameters - NewStartPort and NewEndPort values are not
  213:  *                              consistent.
  214:  */
  215: LIBSPEC int
  216: UPNP_GetListOfPortMappings(const char * controlURL,
  217:                            const char * servicetype,
  218:                            const char * startPort,
  219:                            const char * endPort,
  220:                            const char * protocol,
  221:                            const char * numberOfPorts,
  222:                            struct PortMappingParserData * data);
  223: 
  224: /* IGD:2, functions for service WANIPv6FirewallControl:1 */
  225: LIBSPEC int
  226: UPNP_GetFirewallStatus(const char * controlURL,
  227: 				const char * servicetype,
  228: 				int * firewallEnabled,
  229: 				int * inboundPinholeAllowed);
  230: 
  231: LIBSPEC int
  232: UPNP_GetOutboundPinholeTimeout(const char * controlURL, const char * servicetype,
  233:                     const char * remoteHost,
  234:                     const char * remotePort,
  235:                     const char * intClient,
  236:                     const char * intPort,
  237:                     const char * proto,
  238:                     int * opTimeout);
  239: 
  240: LIBSPEC int
  241: UPNP_AddPinhole(const char * controlURL, const char * servicetype,
  242:                     const char * remoteHost,
  243:                     const char * remotePort,
  244:                     const char * intClient,
  245:                     const char * intPort,
  246:                     const char * proto,
  247:                     const char * leaseTime,
  248:                     char * uniqueID);
  249: 
  250: LIBSPEC int
  251: UPNP_UpdatePinhole(const char * controlURL, const char * servicetype,
  252:                     const char * uniqueID,
  253:                     const char * leaseTime);
  254: 
  255: LIBSPEC int
  256: UPNP_DeletePinhole(const char * controlURL, const char * servicetype, const char * uniqueID);
  257: 
  258: LIBSPEC int
  259: UPNP_CheckPinholeWorking(const char * controlURL, const char * servicetype,
  260:                                  const char * uniqueID, int * isWorking);
  261: 
  262: LIBSPEC int
  263: UPNP_GetPinholePackets(const char * controlURL, const char * servicetype,
  264:                                  const char * uniqueID, int * packets);
  265: 
  266: #ifdef __cplusplus
  267: }
  268: #endif
  269: 
  270: #endif
  271: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>