libpurple/stun.h

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 20147
66f05a854eee
child 32787
7072f190d6ad
permissions
-rw-r--r--

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
1 /**
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
2 * @file stun.h STUN API
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
3 * @ingroup core
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
6 /* purple
11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
7 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
8 * Purple is the legal property of its developers, whose names are too numerous
11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
10 * source distribution.
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
11 *
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
15 * (at your option) any later version.
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
16 *
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
20 * GNU General Public License for more details.
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
21 *
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 15884
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
25 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
26 #ifndef _PURPLE_STUN_H_
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
27 #define _PURPLE_STUN_H_
11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
28
14988
66b34458d49e [gaim-migrate @ 17698]
Richard Laager <rlaager@pidgin.im>
parents: 14254
diff changeset
29 #ifdef __cplusplus
66b34458d49e [gaim-migrate @ 17698]
Richard Laager <rlaager@pidgin.im>
parents: 14254
diff changeset
30 extern "C" {
66b34458d49e [gaim-migrate @ 17698]
Richard Laager <rlaager@pidgin.im>
parents: 14254
diff changeset
31 #endif
66b34458d49e [gaim-migrate @ 17698]
Richard Laager <rlaager@pidgin.im>
parents: 14254
diff changeset
32
11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
33 /**************************************************************************/
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
34 /** @name STUN API */
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
35 /**************************************************************************/
12050
a7d5a2430722 [gaim-migrate @ 14345]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
36 /*@{*/
11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
37
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
38 typedef struct _PurpleStunNatDiscovery PurpleStunNatDiscovery;
12686
ec3e7c4ff045 [gaim-migrate @ 15029]
Richard Laager <rlaager@pidgin.im>
parents: 12323
diff changeset
39
ec3e7c4ff045 [gaim-migrate @ 15029]
Richard Laager <rlaager@pidgin.im>
parents: 12323
diff changeset
40 typedef enum {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
41 PURPLE_STUN_STATUS_UNDISCOVERED = -1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
42 PURPLE_STUN_STATUS_UNKNOWN, /* no STUN server reachable */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
43 PURPLE_STUN_STATUS_DISCOVERING,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
44 PURPLE_STUN_STATUS_DISCOVERED
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
45 } PurpleStunStatus;
11829
8d89f3c00831 [gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents: 11501
diff changeset
46
12686
ec3e7c4ff045 [gaim-migrate @ 15029]
Richard Laager <rlaager@pidgin.im>
parents: 12323
diff changeset
47 typedef enum {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
48 PURPLE_STUN_NAT_TYPE_PUBLIC_IP,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
49 PURPLE_STUN_NAT_TYPE_UNKNOWN_NAT,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
50 PURPLE_STUN_NAT_TYPE_FULL_CONE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
51 PURPLE_STUN_NAT_TYPE_RESTRICTED_CONE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
52 PURPLE_STUN_NAT_TYPE_PORT_RESTRICTED_CONE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
53 PURPLE_STUN_NAT_TYPE_SYMMETRIC
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
54 } PurpleStunNatType;
11829
8d89f3c00831 [gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents: 11501
diff changeset
55
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
56 struct _PurpleStunNatDiscovery {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
57 PurpleStunStatus status;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
58 PurpleStunNatType type;
11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
59 char publicip[16];
12756
b8df02e0c6e5 [gaim-migrate @ 15103]
Daniel Atallah <datallah@pidgin.im>
parents: 12686
diff changeset
60 char *servername;
b8df02e0c6e5 [gaim-migrate @ 15103]
Daniel Atallah <datallah@pidgin.im>
parents: 12686
diff changeset
61 time_t lookup_time;
11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
62 };
12050
a7d5a2430722 [gaim-migrate @ 14345]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
63
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
64 typedef void (*StunCallback) (PurpleStunNatDiscovery *);
11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
65
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
66 /**
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
67 * Starts a NAT discovery. It returns a PurpleStunNatDiscovery if the discovery
11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
68 * is already done. Otherwise the callback is called when the discovery is over
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
69 * and NULL is returned.
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
70 *
12686
ec3e7c4ff045 [gaim-migrate @ 15029]
Richard Laager <rlaager@pidgin.im>
parents: 12323
diff changeset
71 * @param cb The callback to call when the STUN discovery is finished if the
ec3e7c4ff045 [gaim-migrate @ 15029]
Richard Laager <rlaager@pidgin.im>
parents: 12323
diff changeset
72 * discovery would block. If the discovery is done, this is NOT
ec3e7c4ff045 [gaim-migrate @ 15029]
Richard Laager <rlaager@pidgin.im>
parents: 12323
diff changeset
73 * called.
11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
74 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
75 * @return a PurpleStunNatDiscovery which includes the public IP and the type
11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
76 * of NAT or NULL is discovery would block
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
77 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
78 PurpleStunNatDiscovery *purple_stun_discover(StunCallback cb);
11225
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
79
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
80 void purple_stun_init(void);
12050
a7d5a2430722 [gaim-migrate @ 14345]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
81
a7d5a2430722 [gaim-migrate @ 14345]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
82 /*@}*/
a7d5a2430722 [gaim-migrate @ 14345]
Mark Doliner <markdoliner@pidgin.im>
parents: 11829
diff changeset
83
14988
66b34458d49e [gaim-migrate @ 17698]
Richard Laager <rlaager@pidgin.im>
parents: 14254
diff changeset
84 #ifdef __cplusplus
66b34458d49e [gaim-migrate @ 17698]
Richard Laager <rlaager@pidgin.im>
parents: 14254
diff changeset
85 }
66b34458d49e [gaim-migrate @ 17698]
Richard Laager <rlaager@pidgin.im>
parents: 14254
diff changeset
86 #endif
66b34458d49e [gaim-migrate @ 17698]
Richard Laager <rlaager@pidgin.im>
parents: 14254
diff changeset
87
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
88 #endif /* _PURPLE_STUN_H_ */

mercurial