Return to upnpcommands.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / miniupnpd / miniupnpc / include |
1.1 ! misho 1: /* $Id: upnpcommands.h,v 1.32 2018/03/13 23:34:47 nanard Exp $ */ ! 2: /* Miniupnp project : http://miniupnp.free.fr/ ! 3: * Author : Thomas Bernard ! 4: * Copyright (c) 2005-2018 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 "miniupnpc_declspec.h" ! 11: #include "miniupnpctypes.h" ! 12: ! 13: /* MiniUPnPc return codes : */ ! 14: #define UPNPCOMMAND_SUCCESS (0) ! 15: #define UPNPCOMMAND_UNKNOWN_ERROR (-1) ! 16: #define UPNPCOMMAND_INVALID_ARGS (-2) ! 17: #define UPNPCOMMAND_HTTP_ERROR (-3) ! 18: #define UPNPCOMMAND_INVALID_RESPONSE (-4) ! 19: #define UPNPCOMMAND_MEM_ALLOC_ERROR (-5) ! 20: ! 21: #ifdef __cplusplus ! 22: extern "C" { ! 23: #endif ! 24: ! 25: struct PortMappingParserData; ! 26: ! 27: MINIUPNP_LIBSPEC UNSIGNED_INTEGER ! 28: UPNP_GetTotalBytesSent(const char * controlURL, ! 29: const char * servicetype); ! 30: ! 31: MINIUPNP_LIBSPEC UNSIGNED_INTEGER ! 32: UPNP_GetTotalBytesReceived(const char * controlURL, ! 33: const char * servicetype); ! 34: ! 35: MINIUPNP_LIBSPEC UNSIGNED_INTEGER ! 36: UPNP_GetTotalPacketsSent(const char * controlURL, ! 37: const char * servicetype); ! 38: ! 39: MINIUPNP_LIBSPEC UNSIGNED_INTEGER ! 40: UPNP_GetTotalPacketsReceived(const char * controlURL, ! 41: const char * servicetype); ! 42: ! 43: /* UPNP_GetStatusInfo() ! 44: * status and lastconnerror are 64 byte buffers ! 45: * Return values : ! 46: * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR ! 47: * or a UPnP Error code */ ! 48: MINIUPNP_LIBSPEC int ! 49: UPNP_GetStatusInfo(const char * controlURL, ! 50: const char * servicetype, ! 51: char * status, ! 52: unsigned int * uptime, ! 53: char * lastconnerror); ! 54: ! 55: /* UPNP_GetConnectionTypeInfo() ! 56: * argument connectionType is a 64 character buffer ! 57: * Return Values : ! 58: * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR ! 59: * or a UPnP Error code */ ! 60: MINIUPNP_LIBSPEC int ! 61: UPNP_GetConnectionTypeInfo(const char * controlURL, ! 62: const char * servicetype, ! 63: char * connectionType); ! 64: ! 65: /* UPNP_GetExternalIPAddress() call the corresponding UPNP method. ! 66: * if the third arg is not null the value is copied to it. ! 67: * at least 16 bytes must be available ! 68: * ! 69: * Return values : ! 70: * 0 : SUCCESS ! 71: * NON ZERO : ERROR Either an UPnP error code or an unknown error. ! 72: * ! 73: * possible UPnP Errors : ! 74: * 402 Invalid Args - See UPnP Device Architecture section on Control. ! 75: * 501 Action Failed - See UPnP Device Architecture section on Control. */ ! 76: MINIUPNP_LIBSPEC int ! 77: UPNP_GetExternalIPAddress(const char * controlURL, ! 78: const char * servicetype, ! 79: char * extIpAdd); ! 80: ! 81: /* UPNP_GetLinkLayerMaxBitRates() ! 82: * call WANCommonInterfaceConfig:1#GetCommonLinkProperties ! 83: * ! 84: * return values : ! 85: * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR ! 86: * or a UPnP Error Code. */ ! 87: MINIUPNP_LIBSPEC int ! 88: UPNP_GetLinkLayerMaxBitRates(const char* controlURL, ! 89: const char* servicetype, ! 90: unsigned int * bitrateDown, ! 91: unsigned int * bitrateUp); ! 92: ! 93: /* UPNP_AddPortMapping() ! 94: * if desc is NULL, it will be defaulted to "libminiupnpc" ! 95: * remoteHost is usually NULL because IGD don't support it. ! 96: * ! 97: * Return values : ! 98: * 0 : SUCCESS ! 99: * NON ZERO : ERROR. Either an UPnP error code or an unknown error. ! 100: * ! 101: * List of possible UPnP errors for AddPortMapping : ! 102: * errorCode errorDescription (short) - Description (long) ! 103: * 402 Invalid Args - See UPnP Device Architecture section on Control. ! 104: * 501 Action Failed - See UPnP Device Architecture section on Control. ! 105: * 606 Action not authorized - The action requested REQUIRES authorization and ! 106: * the sender was not authorized. ! 107: * 715 WildCardNotPermittedInSrcIP - The source IP address cannot be ! 108: * wild-carded ! 109: * 716 WildCardNotPermittedInExtPort - The external port cannot be wild-carded ! 110: * 718 ConflictInMappingEntry - The port mapping entry specified conflicts ! 111: * with a mapping assigned previously to another client ! 112: * 724 SamePortValuesRequired - Internal and External port values ! 113: * must be the same ! 114: * 725 OnlyPermanentLeasesSupported - The NAT implementation only supports ! 115: * permanent lease times on port mappings ! 116: * 726 RemoteHostOnlySupportsWildcard - RemoteHost must be a wildcard ! 117: * and cannot be a specific IP address or DNS name ! 118: * 727 ExternalPortOnlySupportsWildcard - ExternalPort must be a wildcard and ! 119: * cannot be a specific port value ! 120: * 728 NoPortMapsAvailable - There are not enough free ports available to ! 121: * complete port mapping. ! 122: * 729 ConflictWithOtherMechanisms - Attempted port mapping is not allowed ! 123: * due to conflict with other mechanisms. ! 124: * 732 WildCardNotPermittedInIntPort - The internal port cannot be wild-carded ! 125: */ ! 126: MINIUPNP_LIBSPEC int ! 127: UPNP_AddPortMapping(const char * controlURL, const char * servicetype, ! 128: const char * extPort, ! 129: const char * inPort, ! 130: const char * inClient, ! 131: const char * desc, ! 132: const char * proto, ! 133: const char * remoteHost, ! 134: const char * leaseDuration); ! 135: ! 136: /* UPNP_AddAnyPortMapping() ! 137: * if desc is NULL, it will be defaulted to "libminiupnpc" ! 138: * remoteHost is usually NULL because IGD don't support it. ! 139: * ! 140: * Return values : ! 141: * 0 : SUCCESS ! 142: * NON ZERO : ERROR. Either an UPnP error code or an unknown error. ! 143: * ! 144: * List of possible UPnP errors for AddPortMapping : ! 145: * errorCode errorDescription (short) - Description (long) ! 146: * 402 Invalid Args - See UPnP Device Architecture section on Control. ! 147: * 501 Action Failed - See UPnP Device Architecture section on Control. ! 148: * 606 Action not authorized - The action requested REQUIRES authorization and ! 149: * the sender was not authorized. ! 150: * 715 WildCardNotPermittedInSrcIP - The source IP address cannot be ! 151: * wild-carded ! 152: * 716 WildCardNotPermittedInExtPort - The external port cannot be wild-carded ! 153: * 728 NoPortMapsAvailable - There are not enough free ports available to ! 154: * complete port mapping. ! 155: * 729 ConflictWithOtherMechanisms - Attempted port mapping is not allowed ! 156: * due to conflict with other mechanisms. ! 157: * 732 WildCardNotPermittedInIntPort - The internal port cannot be wild-carded ! 158: */ ! 159: MINIUPNP_LIBSPEC int ! 160: UPNP_AddAnyPortMapping(const char * controlURL, const char * servicetype, ! 161: const char * extPort, ! 162: const char * inPort, ! 163: const char * inClient, ! 164: const char * desc, ! 165: const char * proto, ! 166: const char * remoteHost, ! 167: const char * leaseDuration, ! 168: char * reservedPort); ! 169: ! 170: /* UPNP_DeletePortMapping() ! 171: * Use same argument values as what was used for AddPortMapping(). ! 172: * remoteHost is usually NULL because IGD don't support it. ! 173: * Return Values : ! 174: * 0 : SUCCESS ! 175: * NON ZERO : error. Either an UPnP error code or an undefined error. ! 176: * ! 177: * List of possible UPnP errors for DeletePortMapping : ! 178: * 402 Invalid Args - See UPnP Device Architecture section on Control. ! 179: * 606 Action not authorized - The action requested REQUIRES authorization ! 180: * and the sender was not authorized. ! 181: * 714 NoSuchEntryInArray - The specified value does not exist in the array */ ! 182: MINIUPNP_LIBSPEC int ! 183: UPNP_DeletePortMapping(const char * controlURL, const char * servicetype, ! 184: const char * extPort, const char * proto, ! 185: const char * remoteHost); ! 186: ! 187: /* UPNP_DeletePortRangeMapping() ! 188: * Use same argument values as what was used for AddPortMapping(). ! 189: * remoteHost is usually NULL because IGD don't support it. ! 190: * Return Values : ! 191: * 0 : SUCCESS ! 192: * NON ZERO : error. Either an UPnP error code or an undefined error. ! 193: * ! 194: * List of possible UPnP errors for DeletePortMapping : ! 195: * 606 Action not authorized - The action requested REQUIRES authorization ! 196: * and the sender was not authorized. ! 197: * 730 PortMappingNotFound - This error message is returned if no port ! 198: * mapping is found in the specified range. ! 199: * 733 InconsistentParameters - NewStartPort and NewEndPort values are not consistent. */ ! 200: MINIUPNP_LIBSPEC int ! 201: UPNP_DeletePortMappingRange(const char * controlURL, const char * servicetype, ! 202: const char * extPortStart, const char * extPortEnd, ! 203: const char * proto, ! 204: const char * manage); ! 205: ! 206: /* UPNP_GetPortMappingNumberOfEntries() ! 207: * not supported by all routers */ ! 208: MINIUPNP_LIBSPEC int ! 209: UPNP_GetPortMappingNumberOfEntries(const char * controlURL, ! 210: const char * servicetype, ! 211: unsigned int * numEntries); ! 212: ! 213: /* UPNP_GetSpecificPortMappingEntry() ! 214: * retrieves an existing port mapping ! 215: * params : ! 216: * in extPort ! 217: * in proto ! 218: * in remoteHost ! 219: * out intClient (16 bytes) ! 220: * out intPort (6 bytes) ! 221: * out desc (80 bytes) ! 222: * out enabled (4 bytes) ! 223: * out leaseDuration (16 bytes) ! 224: * ! 225: * return value : ! 226: * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR ! 227: * or a UPnP Error Code. ! 228: * ! 229: * List of possible UPnP errors for _GetSpecificPortMappingEntry : ! 230: * 402 Invalid Args - See UPnP Device Architecture section on Control. ! 231: * 501 Action Failed - See UPnP Device Architecture section on Control. ! 232: * 606 Action not authorized - The action requested REQUIRES authorization ! 233: * and the sender was not authorized. ! 234: * 714 NoSuchEntryInArray - The specified value does not exist in the array. ! 235: */ ! 236: MINIUPNP_LIBSPEC int ! 237: UPNP_GetSpecificPortMappingEntry(const char * controlURL, ! 238: const char * servicetype, ! 239: const char * extPort, ! 240: const char * proto, ! 241: const char * remoteHost, ! 242: char * intClient, ! 243: char * intPort, ! 244: char * desc, ! 245: char * enabled, ! 246: char * leaseDuration); ! 247: ! 248: /* UPNP_GetGenericPortMappingEntry() ! 249: * params : ! 250: * in index ! 251: * out extPort (6 bytes) ! 252: * out intClient (16 bytes) ! 253: * out intPort (6 bytes) ! 254: * out protocol (4 bytes) ! 255: * out desc (80 bytes) ! 256: * out enabled (4 bytes) ! 257: * out rHost (64 bytes) ! 258: * out duration (16 bytes) ! 259: * ! 260: * return value : ! 261: * UPNPCOMMAND_SUCCESS, UPNPCOMMAND_INVALID_ARGS, UPNPCOMMAND_UNKNOWN_ERROR ! 262: * or a UPnP Error Code. ! 263: * ! 264: * Possible UPNP Error codes : ! 265: * 402 Invalid Args - See UPnP Device Architecture section on Control. ! 266: * 606 Action not authorized - The action requested REQUIRES authorization ! 267: * and the sender was not authorized. ! 268: * 713 SpecifiedArrayIndexInvalid - The specified array index is out of bounds ! 269: */ ! 270: MINIUPNP_LIBSPEC int ! 271: UPNP_GetGenericPortMappingEntry(const char * controlURL, ! 272: const char * servicetype, ! 273: const char * index, ! 274: char * extPort, ! 275: char * intClient, ! 276: char * intPort, ! 277: char * protocol, ! 278: char * desc, ! 279: char * enabled, ! 280: char * rHost, ! 281: char * duration); ! 282: ! 283: /* UPNP_GetListOfPortMappings() Available in IGD v2 ! 284: * ! 285: * ! 286: * Possible UPNP Error codes : ! 287: * 606 Action not Authorized ! 288: * 730 PortMappingNotFound - no port mapping is found in the specified range. ! 289: * 733 InconsistantParameters - NewStartPort and NewEndPort values are not ! 290: * consistent. ! 291: */ ! 292: MINIUPNP_LIBSPEC int ! 293: UPNP_GetListOfPortMappings(const char * controlURL, ! 294: const char * servicetype, ! 295: const char * startPort, ! 296: const char * endPort, ! 297: const char * protocol, ! 298: const char * numberOfPorts, ! 299: struct PortMappingParserData * data); ! 300: ! 301: /* IGD:2, functions for service WANIPv6FirewallControl:1 */ ! 302: MINIUPNP_LIBSPEC int ! 303: UPNP_GetFirewallStatus(const char * controlURL, ! 304: const char * servicetype, ! 305: int * firewallEnabled, ! 306: int * inboundPinholeAllowed); ! 307: ! 308: MINIUPNP_LIBSPEC int ! 309: UPNP_GetOutboundPinholeTimeout(const char * controlURL, const char * servicetype, ! 310: const char * remoteHost, ! 311: const char * remotePort, ! 312: const char * intClient, ! 313: const char * intPort, ! 314: const char * proto, ! 315: int * opTimeout); ! 316: ! 317: MINIUPNP_LIBSPEC int ! 318: UPNP_AddPinhole(const char * controlURL, const char * servicetype, ! 319: const char * remoteHost, ! 320: const char * remotePort, ! 321: const char * intClient, ! 322: const char * intPort, ! 323: const char * proto, ! 324: const char * leaseTime, ! 325: char * uniqueID); ! 326: ! 327: MINIUPNP_LIBSPEC int ! 328: UPNP_UpdatePinhole(const char * controlURL, const char * servicetype, ! 329: const char * uniqueID, ! 330: const char * leaseTime); ! 331: ! 332: MINIUPNP_LIBSPEC int ! 333: UPNP_DeletePinhole(const char * controlURL, const char * servicetype, const char * uniqueID); ! 334: ! 335: MINIUPNP_LIBSPEC int ! 336: UPNP_CheckPinholeWorking(const char * controlURL, const char * servicetype, ! 337: const char * uniqueID, int * isWorking); ! 338: ! 339: MINIUPNP_LIBSPEC int ! 340: UPNP_GetPinholePackets(const char * controlURL, const char * servicetype, ! 341: const char * uniqueID, int * packets); ! 342: ! 343: #ifdef __cplusplus ! 344: } ! 345: #endif ! 346: ! 347: #endif ! 348: