comparison libgaim/stun.h @ 14192:60b1bc8dbf37

[gaim-migrate @ 16863] Renamed 'core' to 'libgaim' committer: Tailor Script <tailor@pidgin.im>
author Evan Schoenberg <evan.s@dreskin.net>
date Sat, 19 Aug 2006 01:50:10 +0000
parents
children 500a8f54354e
comparison
equal deleted inserted replaced
14191:009db0b357b5 14192:60b1bc8dbf37
1 /**
2 * @file stun.h STUN API
3 * @ingroup core
4 *
5 * gaim
6 *
7 * Gaim is the legal property of its developers, whose names are too numerous
8 * to list here. Please refer to the COPYRIGHT file distributed with this
9 * source distribution.
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 */
25 #ifndef _GAIM_STUN_H_
26 #define _GAIM_STUN_H_
27
28 /**************************************************************************/
29 /** @name STUN API */
30 /**************************************************************************/
31 /*@{*/
32
33 typedef struct _GaimStunNatDiscovery GaimStunNatDiscovery;
34
35 typedef enum {
36 GAIM_STUN_STATUS_UNDISCOVERED = -1,
37 GAIM_STUN_STATUS_UNKNOWN, /* no STUN server reachable */
38 GAIM_STUN_STATUS_DISCOVERING,
39 GAIM_STUN_STATUS_DISCOVERED
40 } GaimStunStatus;
41
42 typedef enum {
43 GAIM_STUN_NAT_TYPE_PUBLIC_IP,
44 GAIM_STUN_NAT_TYPE_UNKNOWN_NAT,
45 GAIM_STUN_NAT_TYPE_FULL_CONE,
46 GAIM_STUN_NAT_TYPE_RESTRICTED_CONE,
47 GAIM_STUN_NAT_TYPE_PORT_RESTRICTED_CONE,
48 GAIM_STUN_NAT_TYPE_SYMMETRIC
49 } GaimStunNatType;
50
51 struct _GaimStunNatDiscovery {
52 GaimStunStatus status;
53 GaimStunNatType type;
54 char publicip[16];
55 char *servername;
56 time_t lookup_time;
57 };
58
59 typedef void (*StunCallback) (GaimStunNatDiscovery *);
60
61 /**
62 * Starts a NAT discovery. It returns a GaimStunNatDiscovery if the discovery
63 * is already done. Otherwise the callback is called when the discovery is over
64 * and NULL is returned.
65 *
66 * @param cb The callback to call when the STUN discovery is finished if the
67 * discovery would block. If the discovery is done, this is NOT
68 * called.
69 *
70 * @return a GaimStunNatDiscovery which includes the public IP and the type
71 * of NAT or NULL is discovery would block
72 */
73 GaimStunNatDiscovery *gaim_stun_discover(StunCallback cb);
74
75 void gaim_stun_init(void);
76
77 /*@}*/
78
79 #endif /* _GAIM_STUN_H_ */