1 {.$DEFINE LIBMINIUPNPC_WINDOZE_STATIC}
3 {$MODE OBJFPC}
4 {$PACKRECORDS C}
6 {$IFDEF WIN32}
7 {$DEFINE MSWINDOWS}
8 {$ENDIF}
10 {$LONGSTRINGS ON}
11 {$MACRO ON}
17 interface
19 {$IFDEF MSWINDOWS}
20 {$IFDEF LIBMINIUPNPC_WINDOZE_STATIC}
21 {$LINKLIB libminiupnpc.a}
22 {$LINKLIB libiphlpapi.a}
23 {$DEFINE MINIUPNPC_IMPL := cdecl; external}
24 {$ELSE}
26 {$ENDIF}
27 {$ELSE}
29 {$ENDIF}
32 Type
56 //char devicetype[MINIUPNPC_URL_MAXSIZE];
65 //int state;
66 //"urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1"
68 // "urn:schemas-upnp-org:service:WANIPConnection:1"
69 // "urn:schemas-upnp-org:service:WANPPPConnection:1"
71 //if both WANIPConnection and WANPPPConnection are present
73 //"urn:schemas-upnp-org:service:WANIPv6FirewallControl:1"
75 // tmp
79 (* upnpDiscover()
80 * discover UPnP devices on the network.
81 * The discovered devices are returned as a chained list.
82 * It is up to the caller to free the list with freeUPNPDevlist().
83 * delay (in millisecond) is the maximum time for waiting any device
84 * response.
85 * If available, device list will be obtained from MiniSSDPd.
86 * Default path for minissdpd socket will be used if minissdpdsock argument
87 * is NULL.
88 * If multicastif is not NULL, it will be used instead of the default
89 * multicast interface for sending SSDP discover packets.
90 * If sameport is not null, SSDP packets will be sent from the source port
91 * 1900 (same as destination port) otherwise system assign a source port. *)
102 (* UPNP_GetValidIGD() :
103 * return values :
104 * 0 = NO IGD found
105 * 1 = A valid connected IGD has been found
106 * 2 = A valid IGD has been found but it reported as
107 * not connected
108 * 3 = an UPnP device has been found but was not recognized as an IGD
109 *
110 * In any non zero return case, the urls and data structures
111 * passed as parameters are set. Donc forget to call FreeUPNPUrls(urls) to
112 * free allocated memory.
113 *)
122 (* UPNP_GetExternalIPAddress() call the corresponding UPNP method.
123 * if the third arg is not null the value is copied to it.
124 * at least 16 bytes must be available
125 *
126 * Return values :
127 * 0 : SUCCESS
128 * NON ZERO : ERROR Either an UPnP error code or an unknown error.
129 *
130 * possible UPnP Errors :
131 * 402 Invalid Args - See UPnP Device Architecture section on Control.
132 * 501 Action Failed - See UPnP Device Architecture section on Control. *)
139 (* UPNP_AddPortMapping()
140 * if desc is NULL, it will be defaulted to "libminiupnpc"
141 * remoteHost is usually NULL because IGD don't support it.
142 *
143 * Return values :
144 * 0 : SUCCESS
145 * NON ZERO : ERROR. Either an UPnP error code or an unknown error.
146 *
147 * List of possible UPnP errors for AddPortMapping :
148 * errorCode errorDescription (short) - Description (long)
149 * 402 Invalid Args - See UPnP Device Architecture section on Control.
150 * 501 Action Failed - See UPnP Device Architecture section on Control.
151 * 715 WildCardNotPermittedInSrcIP - The source IP address cannot be
152 * wild-carded
153 * 716 WildCardNotPermittedInExtPort - The external port cannot be wild-carded
154 * 718 ConflictInMappingEntry - The port mapping entry specified conflicts
155 * with a mapping assigned previously to another client
156 * 724 SamePortValuesRequired - Internal and External port values
157 * must be the same
158 * 725 OnlyPermanentLeasesSupported - The NAT implementation only supports
159 * permanent lease times on port mappings
160 * 726 RemoteHostOnlySupportsWildcard - RemoteHost must be a wildcard
161 * and cannot be a specific IP address or DNS name
162 * 727 ExternalPortOnlySupportsWildcard - ExternalPort must be a wildcard and
163 * cannot be a specific port value *)
176 (* UPNP_DeletePortMapping()
177 * Use same argument values as what was used for AddPortMapping().
178 * remoteHost is usually NULL because IGD don't support it.
179 * Return Values :
180 * 0 : SUCCESS
181 * NON ZERO : error. Either an UPnP error code or an undefined error.
182 *
183 * List of possible UPnP errors for DeletePortMapping :
184 * 402 Invalid Args - See UPnP Device Architecture section on Control.
185 * 714 NoSuchEntryInArray - The specified value does not exist in the array *)
212 implementation