src/upnp.h

Thu, 02 Feb 2006 05:54:51 +0000

author
Richard Laager <rlaager@pidgin.im>
date
Thu, 02 Feb 2006 05:54:51 +0000
changeset 13094
dfbe0dea413b
parent 12909
dfcf4df1dcd7
permissions
-rw-r--r--

[gaim-migrate @ 15455]
Since we try to discourage use of CVS, let's not talk about it in the segfault message. That line doesn't really provide any useful information to the average user anyway.

11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
1 /**
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
2 * @file upnp.h Universal Plug N Play API
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
3 * @ingroup core
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
4 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
5 * gaim
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
6 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
9 * source distribution.
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
10 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
14 * (at your option) any later version.
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
15 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
19 * GNU General Public License for more details.
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
20 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
24 */
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
25
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
26 #ifndef _GAIM_UPNP_H_
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
27 #define _GAIM_UPNP_H_
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
28
11391
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11213
diff changeset
29
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
30 #ifdef __cplusplus
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
31 extern "C" {
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
32 #endif
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
33
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
34 /**************************************************************************/
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
35 /** @name UPnP API */
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
36 /**************************************************************************/
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
37 /*@{*/
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
38
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
39
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
40 typedef void (*GaimUPnPCallback) (gboolean success, gpointer data);
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
41
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
42 /**
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
43 * Sends a discovery request to search for a UPnP enabled IGD that
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
44 * contains the WANIPConnection service that will allow us to recieve the
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
45 * public IP address of the IGD, and control it for forwarding ports.
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
46 * The result will be cached for further use.
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
47 *
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
48 * @param cb an optional callback function to be notified when the UPnP
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
49 * discovery is complete
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
50 * @param cb_data Extra data to be passed to the callback
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
51 */
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
52 void gaim_upnp_discover(GaimUPnPCallback cb, gpointer cb_data);
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
53
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
54 #if 0
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
55 /**
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
56 * Retrieve the current UPnP control info, if there is any available.
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
57 * This will only be filled in if gaim_upnp_discover() had been called,
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
58 * and finished discovering.
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
59 *
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
60 * @return The control URL for the IGD we'll use to use the IGD services
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
61 */
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
62 const GaimUPnPControlInfo* gaim_upnp_get_control_info(void);
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
63 #endif
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
64
11213
837e1970689d [gaim-migrate @ 13344]
Thomas Butter <tbutter@users.sourceforge.net>
parents: 11208
diff changeset
65
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
66 /**
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
67 * Gets the IP address from a UPnP enabled IGD that sits on the local
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
68 * network, so when getting the network IP, instead of returning the
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
69 * local network IP, the public IP is retrieved. This is a cached value from
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
70 * the time of the UPnP discovery.
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
71 *
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
72 * @return The IP address of the network, or NULL if something went wrong
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
73 */
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
74 const gchar* gaim_upnp_get_public_ip(void);
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
75
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
76
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
77 /**
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
78 * Maps Ports in a UPnP enabled IGD that sits on the local network to
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
79 * this gaim client. Essentially, this function takes care of the port
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
80 * forwarding so things like file transfers can work behind NAT firewalls
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
81 *
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
82 * @param portmap The port to map to this client
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
83 * @param protocol The protocol to map, either "TCP" or "UDP"
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
84 * @param cb an optional callback function to be notified when the mapping
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
85 * addition is complete
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
86 * @param cb_data Extra data to be passed to the callback
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
87 */
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
88 void gaim_upnp_set_port_mapping(unsigned short portmap, const gchar* protocol,
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
89 GaimUPnPCallback cb, gpointer cb_data);
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
90
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
91 /**
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
92 * Deletes a port mapping in a UPnP enabled IGD that sits on the local network
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
93 * to this gaim client. Essentially, this function takes care of deleting the
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
94 * port forwarding after they have completed a connection so another client on
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
95 * the local network can take advantage of the port forwarding
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
96 *
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
97 * @param portmap The port to delete the mapping for
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
98 * @param protocol The protocol to map to. Either "TCP" or "UDP"
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
99 * @param cb an optional callback function to be notified when the mapping
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
100 * removal is complete
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
101 * @param cb_data Extra data to be passed to the callback
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
102 */
12909
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
103 void gaim_upnp_remove_port_mapping(unsigned short portmap,
dfcf4df1dcd7 [gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents: 11501
diff changeset
104 const gchar* protocol, GaimUPnPCallback cb, gpointer cb_data);
11195
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
105 /*@}*/
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
106
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
107 #ifdef __cplusplus
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
108 }
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
109 #endif
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
110
d84d542a04ac [gaim-migrate @ 13319]
Adam Warrington <awarring@users.sourceforge.net>
parents:
diff changeset
111 #endif /* _GAIM_UPNP_H_ */

mercurial