Exemple #1
0
int 
StunFormulateChangeRequest(struct ChangeRequest* out_head , uchar pa_opt)
{
	uint MagicCookie = tkGetRandom();
	out_head->head.type   = htons(0x0001);
	out_head->head.length = htons(0x0008);
	out_head->head.transId1 = htonl(MagicCookie);
	out_head->type = htons(0x0003);
	out_head->length = htons(0x0004);

	switch( pa_opt )
	{
	case STUN_CHANGE_BOTH_IP_PORT:
		out_head->value = htonl(0x6);
		break;

	case STUN_CHANGE_IP:
		out_head->value = htonl(0x4);
		break;
	
	case STUN_CHANGE_PORT:
		out_head->value = htonl(0x2);
		break;
	
	default:
		TK_EXCEPTION("STUN option");
	}

	return MagicCookie;
}
Exemple #2
0
void
SockSSLConnect( struct Sock* out_sock )
{
#ifdef TK_CONFIG_SOCK_SSL_ENABLE
	SSL_CTX*     ctx;
	SSL*         ssl;

	SSL_load_error_strings();
	VCK( SSL_library_init() != 1 ,return);

	ctx = SSL_CTX_new (SSLv3_client_method());
	VCK( ctx == NULL ,return);
	ssl = SSL_new (ctx);
	VCK( ssl == NULL ,return);

	VCK( SSL_set_fd ( ssl, out_sock->socket ) != 1 , return);
	//enable socket SSL

	VCK( SSL_connect (ssl) != 1 ,
			TK_EXCEPTION("SSLConnect failed or be shutdown");
			return);
	//connect SSL

	out_sock->ctx = ctx;
	out_sock->ssl = ssl;
#endif
}