Mercurial > pidgin
annotate src/stun.h @ 12264:2be62353f708
[gaim-migrate @ 14566]
this was TRUE in oldstatus
committer: Tailor Script <tailor@pidgin.im>
| author | Nathan Walp <nwalp@pidgin.im> |
|---|---|
| date | Tue, 29 Nov 2005 23:50:39 +0000 |
| parents | 90d7e0f342fa |
| children | fc464a0abccc |
| 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 | |
| 11424 | 79 void gaim_stun_init(); |
| 12050 | 80 |
| 81 /*@}*/ | |
| 82 | |
| 11225 | 83 #endif /* _GAIM_STUN_H_ */ |
| 12050 | 84 |
