예제 #1
0
static OWSLSocketType
transport_implementation_get
(
	TransportProtocol protocol,
	OWSLAddressFamily address_family
)
{
	switch (protocol)
	{
		case TRANSPORT_UDP :
		{
			return owsl_socket_type_get (address_family, OWSL_MODE_DATAGRAM, OWSL_CIPHERING_DISABLED) ;
		}
		case TRANSPORT_TCP :
		{
			return owsl_socket_type_get (address_family, OWSL_MODE_STREAM, OWSL_CIPHERING_DISABLED) ;
		}
		case TRANSPORT_TLS :
		{
			return owsl_socket_type_get (address_family, OWSL_MODE_STREAM, OWSL_CIPHERING_ENABLED) ;
		}
		default :
		{
			return OWSL_TYPE_UNKNOWN ;
		}
	}
}
예제 #2
0
static OWPL_RESULT
owplInitOwsl
(
	unsigned short use_udp,
	unsigned short use_tcp,
	unsigned short use_tls
)
{
	int return_code ;
	int owslWasJustInitialized = 0 ;

	if (! owslIsInitialized)
	{
		return_code = owsl_initialize () ;
		if (return_code != 0)
		{
			goto error ;
		}
		owslIsInitialized = 1 ;
		owslWasJustInitialized = 1 ;
	}

	if (use_udp)
	{
		if
		(
			owsl_socket_type_get
			(
				OWSL_AF_IPV4,
				OWSL_MODE_DATAGRAM,
				OWSL_CIPHERING_DISABLED
			) == OWSL_TYPE_UNKNOWN
			&&
			owsl_socket_type_add (OWSL_TYPE_IPV4_UDP) != 0
		)
		{
			goto error ;
		}
		if
		(
			owsl_socket_type_get
			(
				OWSL_AF_IPV6,
				OWSL_MODE_DATAGRAM,
				OWSL_CIPHERING_DISABLED
			) == OWSL_TYPE_UNKNOWN
			&&
			owsl_socket_type_add (OWSL_TYPE_IPV6_UDP) != 0
		)
		{
			goto error ;
		}
	}
	if (use_tcp)
	{
		if
		(
			owsl_socket_type_get
			(
				OWSL_AF_IPV4,
				OWSL_MODE_STREAM,
				OWSL_CIPHERING_DISABLED
			) == OWSL_TYPE_UNKNOWN
			&&
			owsl_socket_type_add (OWSL_TYPE_IPV4_TCP) != 0
		)
		{
			goto error ;
		}
		if
		(
			owsl_socket_type_get
			(
				OWSL_AF_IPV6,
				OWSL_MODE_STREAM,
				OWSL_CIPHERING_DISABLED
			) == OWSL_TYPE_UNKNOWN
			&&
			owsl_socket_type_add (OWSL_TYPE_IPV6_TCP) != 0
		)
		{
			goto error ;
		}
	}
	if (use_tls)
	{
		if
		(
			owsl_socket_type_get
			(
				OWSL_AF_IPV4,
				OWSL_MODE_STREAM,
				OWSL_CIPHERING_ENABLED
			) == OWSL_TYPE_UNKNOWN
			&&
			owsl_socket_type_add (OWSL_TYPE_IPV4_TLS) != 0
		)
		{
			goto error ;
		}
		if
		(
			owsl_socket_type_get
			(
				OWSL_AF_IPV6,
				OWSL_MODE_STREAM,
				OWSL_CIPHERING_ENABLED
			) == OWSL_TYPE_UNKNOWN
			&&
			owsl_socket_type_add (OWSL_TYPE_IPV6_TLS) != 0
		)
		{
			goto error ;
		}
	}

	return OWPL_RESULT_SUCCESS ;

error :
	if (owslWasJustInitialized)
	{
		owsl_terminate () ;
	}
	return OWPL_RESULT_FAILURE ;
}