src/stun.h

Fri, 26 Aug 2005 04:38:36 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Fri, 26 Aug 2005 04:38:36 +0000
changeset 11348
b8938b189d61
parent 11225
e888c207b994
child 11354
265f44ed44bc
permissions
-rw-r--r--

[gaim-migrate @ 13565]
Two changes:
1. Fix the "enabled" button in the accounts editor so that unchecking it
will sign off an account. I broke this in one of my commits on
August 17th
2. Some changes from Thomas Butter to finishing initializing Gaim, and THEN
attempt to sign on accounts. This fixes problems with the crypto API
not yet being initialized.

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
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
4 *
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
5 * gaim
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
6 *
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
7 * Gaim is the legal property of its developers, whose names are too numerous
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
8 * 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
9 * source distribution.
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
10 *
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
11 * 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
12 * 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
13 * the Free Software Foundation; either version 2 of the License, or
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
14 * (at your option) any later version.
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
15 *
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
16 * 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
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
19 * GNU General Public License for more details.
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
20 *
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
21 * 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
22 * along with this program; if not, write to the Free Software
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
24 */
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
25 #ifndef _GAIM_STUN_H_
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
26 #define _GAIM_STUN_H_
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
27
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
28 /**************************************************************************/
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
29 /** @name STUN API */
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
30 /**************************************************************************/
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
31
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
32 struct stun_nattype {
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
33 gint status; // 0 - unknown (no STUN server reachable), 1 - discovering, 2 - discovered
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
34 gint type; // 0 - public ip
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
35 // 1 - NAT (unknown type)
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
36 // 2 - full cone
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
37 // 3 - restricted cone
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
38 // 4 - port restricted cone
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
39 // 5 - symmetric
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
40 char publicip[16];
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
41 };
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
42
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
43 struct stun_header {
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
44 short type;
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
45 short len;
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
46 int transid[4];
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
47 };
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
48
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
49 struct stun_attrib {
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
50 short type;
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
51 short len;
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
52 };
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
53
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
54 typedef void (*StunCallback) (struct stun_nattype *);
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
55
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
56 /**
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
57 * Starts a NAT discovery. It returns a struct stun_nattype if the discovery
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
58 * 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
59 * and NULL is returned.
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
60 *
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
61 * @param A callback
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
62 *
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
63 * @return a struct stun_nattype which includes the public IP and the type
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
64 * of NAT or NULL is discovery would block
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 struct stun_nattype *gaim_stun_discover(StunCallback cb);
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
67
e888c207b994 [gaim-migrate @ 13361]
Thomas Butter <tbutter@users.sourceforge.net>
parents:
diff changeset
68 #endif /* _GAIM_STUN_H_ */

mercurial