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