Mercurial > pidgin.yaz
annotate src/stun.h @ 11963:d8787960e398
[gaim-migrate @ 14254]
Documentation
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Fri, 04 Nov 2005 01:29:58 +0000 |
parents | 4669e7461968 |
children | 90d7e0f342fa |
rev | line source |
---|---|
11225 | 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 struct stun_nattype { | |
11829
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
33 gint status; /* 0 - unknown (no STUN server reachable) */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
34 /* 1 - discovering */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
35 /* 2 - discovered */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
36 |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
37 gint type; /* 0 - public ip */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
38 /* 1 - NAT (unknown type) */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
39 /* 2 - full cone */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
40 /* 3 - restricted cone */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
41 /* 4 - port restricted cone */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
42 /* 5 - symmetric */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
43 |
11225 | 44 char publicip[16]; |
45 }; | |
46 | |
47 struct stun_header { | |
48 short type; | |
49 short len; | |
50 int transid[4]; | |
51 }; | |
52 | |
53 struct stun_attrib { | |
54 short type; | |
55 short len; | |
56 }; | |
57 | |
11354 | 58 struct stun_change { |
59 struct stun_header hdr; | |
60 struct stun_attrib attrib; | |
61 char value[4]; | |
62 }; | |
63 | |
11225 | 64 typedef void (*StunCallback) (struct stun_nattype *); |
65 | |
66 /** | |
67 * Starts a NAT discovery. It returns a struct stun_nattype if the discovery | |
68 * is already done. Otherwise the callback is called when the discovery is over | |
69 * and NULL is returned. | |
70 * | |
11501
9563b768e8e2
[gaim-migrate @ 13746]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
71 * @param cb A callback |
11225 | 72 * |
73 * @return a struct stun_nattype which includes the public IP and the type | |
74 * of NAT or NULL is discovery would block | |
75 */ | |
76 struct stun_nattype *gaim_stun_discover(StunCallback cb); | |
77 | |
11424 | 78 void gaim_stun_init(); |
11225 | 79 #endif /* _GAIM_STUN_H_ */ |