stun.h
Go to the documentation of this file.00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _PURPLE_STUN_H_
00027 #define _PURPLE_STUN_H_
00028
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032
00033
00035
00038 typedef struct _PurpleStunNatDiscovery PurpleStunNatDiscovery;
00039
00040 typedef enum {
00041 PURPLE_STUN_STATUS_UNDISCOVERED = -1,
00042 PURPLE_STUN_STATUS_UNKNOWN,
00043 PURPLE_STUN_STATUS_DISCOVERING,
00044 PURPLE_STUN_STATUS_DISCOVERED
00045 } PurpleStunStatus;
00046
00047 typedef enum {
00048 PURPLE_STUN_NAT_TYPE_PUBLIC_IP,
00049 PURPLE_STUN_NAT_TYPE_UNKNOWN_NAT,
00050 PURPLE_STUN_NAT_TYPE_FULL_CONE,
00051 PURPLE_STUN_NAT_TYPE_RESTRICTED_CONE,
00052 PURPLE_STUN_NAT_TYPE_PORT_RESTRICTED_CONE,
00053 PURPLE_STUN_NAT_TYPE_SYMMETRIC
00054 } PurpleStunNatType;
00055
00056 struct _PurpleStunNatDiscovery {
00057 PurpleStunStatus status;
00058 PurpleStunNatType type;
00059 char publicip[16];
00060 char *servername;
00061 time_t lookup_time;
00062 };
00063
00064 typedef void (*StunCallback) (PurpleStunNatDiscovery *);
00065
00078 PurpleStunNatDiscovery *purple_stun_discover(StunCallback cb);
00079
00080 void purple_stun_init(void);
00081
00084 #ifdef __cplusplus
00085 }
00086 #endif
00087
00088 #endif