stun.h

Go to the documentation of this file.
00001 
00025 #ifndef _PURPLE_STUN_H_
00026 #define _PURPLE_STUN_H_
00027 
00028 #ifdef __cplusplus
00029 extern "C" {
00030 #endif
00031 
00032 /**************************************************************************/
00034 /**************************************************************************/
00037 typedef struct _PurpleStunNatDiscovery PurpleStunNatDiscovery;
00038 
00039 typedef enum {
00040     PURPLE_STUN_STATUS_UNDISCOVERED = -1,
00041     PURPLE_STUN_STATUS_UNKNOWN, /* no STUN server reachable */
00042     PURPLE_STUN_STATUS_DISCOVERING,
00043     PURPLE_STUN_STATUS_DISCOVERED
00044 } PurpleStunStatus;
00045 
00046 typedef enum {
00047     PURPLE_STUN_NAT_TYPE_PUBLIC_IP,
00048     PURPLE_STUN_NAT_TYPE_UNKNOWN_NAT,
00049     PURPLE_STUN_NAT_TYPE_FULL_CONE,
00050     PURPLE_STUN_NAT_TYPE_RESTRICTED_CONE,
00051     PURPLE_STUN_NAT_TYPE_PORT_RESTRICTED_CONE,
00052     PURPLE_STUN_NAT_TYPE_SYMMETRIC
00053 } PurpleStunNatType;
00054 
00055 struct _PurpleStunNatDiscovery {
00056     PurpleStunStatus status;
00057     PurpleStunNatType type;
00058     char publicip[16];
00059     char *servername;
00060     time_t lookup_time;
00061 };
00062 
00063 typedef void (*StunCallback) (PurpleStunNatDiscovery *);
00064 
00077 PurpleStunNatDiscovery *purple_stun_discover(StunCallback cb);
00078 
00079 void purple_stun_init(void);
00080 
00083 #ifdef __cplusplus
00084 }
00085 #endif
00086 
00087 #endif /* _PURPLE_STUN_H_ */