Mercurial > pidgin
annotate src/stun.h @ 12540:b0ba132271a9
[gaim-migrate @ 14853]
this doesn't make it work, but it does make it more correct
committer: Tailor Script <tailor@pidgin.im>
author | Nathan Walp <nwalp@pidgin.im> |
---|---|
date | Sat, 17 Dec 2005 21:01:40 +0000 |
parents | fc464a0abccc |
children | 5f65a0cca87c |
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 /**************************************************************************/ | |
12050 | 31 /*@{*/ |
11225 | 32 |
33 struct stun_nattype { | |
11829
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
34 gint status; /* 0 - unknown (no STUN server reachable) */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
35 /* 1 - discovering */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
36 /* 2 - discovered */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
37 |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
38 gint type; /* 0 - public ip */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
39 /* 1 - NAT (unknown type) */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
40 /* 2 - full cone */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
41 /* 3 - restricted cone */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
42 /* 4 - port restricted cone */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
43 /* 5 - symmetric */ |
4669e7461968
[gaim-migrate @ 14120]
Richard Laager <rlaager@wiktel.com>
parents:
11501
diff
changeset
|
44 |
11225 | 45 char publicip[16]; |
46 }; | |
12050 | 47 |
11225 | 48 struct stun_header { |
49 short type; | |
50 short len; | |
51 int transid[4]; | |
52 }; | |
53 | |
54 struct stun_attrib { | |
55 short type; | |
56 short len; | |
57 }; | |
58 | |
11354 | 59 struct stun_change { |
60 struct stun_header hdr; | |
61 struct stun_attrib attrib; | |
62 char value[4]; | |
63 }; | |
64 | |
11225 | 65 typedef void (*StunCallback) (struct stun_nattype *); |
66 | |
67 /** | |
68 * Starts a NAT discovery. It returns a struct stun_nattype if the discovery | |
69 * is already done. Otherwise the callback is called when the discovery is over | |
70 * and NULL is returned. | |
71 * | |
11501
9563b768e8e2
[gaim-migrate @ 13746]
Richard Laager <rlaager@wiktel.com>
parents:
11424
diff
changeset
|
72 * @param cb A callback |
11225 | 73 * |
74 * @return a struct stun_nattype which includes the public IP and the type | |
75 * of NAT or NULL is discovery would block | |
76 */ | |
77 struct stun_nattype *gaim_stun_discover(StunCallback cb); | |
78 | |
12323
fc464a0abccc
[gaim-migrate @ 14627]
Richard Laager <rlaager@wiktel.com>
parents:
12050
diff
changeset
|
79 void gaim_stun_init(void); |
12050 | 80 |
81 /*@}*/ | |
82 | |
11225 | 83 #endif /* _GAIM_STUN_H_ */ |
12050 | 84 |