00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __PJNATH_NAT_DETECT_H__
00021 #define __PJNATH_NAT_DETECT_H__
00022
00027 #include <pjnath/stun_session.h>
00028
00029
00030 PJ_BEGIN_DECL
00031
00032
00049 typedef enum pj_stun_nat_type
00050 {
00054 PJ_STUN_NAT_TYPE_UNKNOWN,
00055
00060 PJ_STUN_NAT_TYPE_ERR_UNKNOWN,
00061
00067 PJ_STUN_NAT_TYPE_OPEN,
00068
00073 PJ_STUN_NAT_TYPE_BLOCKED,
00074
00080 PJ_STUN_NAT_TYPE_SYMMETRIC_UDP,
00081
00088 PJ_STUN_NAT_TYPE_FULL_CONE,
00089
00099 PJ_STUN_NAT_TYPE_SYMMETRIC,
00100
00108 PJ_STUN_NAT_TYPE_RESTRICTED,
00109
00117 PJ_STUN_NAT_TYPE_PORT_RESTRICTED
00118
00119 } pj_stun_nat_type;
00120
00121
00125 typedef struct pj_stun_nat_detect_result
00126 {
00132 pj_status_t status;
00133
00137 const char *status_text;
00138
00143 pj_stun_nat_type nat_type;
00144
00148 const char *nat_type_name;
00149
00150 } pj_stun_nat_detect_result;
00151
00152
00157 typedef void pj_stun_nat_detect_cb(void *user_data,
00158 const pj_stun_nat_detect_result *res);
00159
00160
00168 PJ_DECL(const char*) pj_stun_get_nat_name(pj_stun_nat_type type);
00169
00170
00193 PJ_DECL(pj_status_t) pj_stun_detect_nat_type(const pj_sockaddr_in *server,
00194 pj_stun_config *stun_cfg,
00195 void *user_data,
00196 pj_stun_nat_detect_cb *cb);
00197
00198
00204 PJ_END_DECL
00205
00206
00207 #endif
00208