=pod

=head1 NAME

SSL_get_version - get the protocol version of a connection.

=head1 SYNOPSIS

 #include <openssl/ssl.h>

 const char *SSL_get_version(const SSL *ssl);

=head1 DESCRIPTION

SSL_get_version() returns the name of the protocol used for the
connection B<ssl>.

=head1 RETURN VALUES

The following strings can be returned:

=over 4

=item SSLv2

The connection uses the SSLv2 protocol.

=item SSLv3

The connection uses the SSLv3 protocol.

=item TLSv1

The connection uses the TLSv1.0 protocol.

=item TLSv1.1

The connection uses the TLSv1.1 protocol.

=item TLSv1.2

The connection uses the TLSv1.2 protocol.

=item unknown

This indicates that no version has been set (no connection established).

=back

=head1 SEE ALSO

L<ssl(3)|ssl(3)>

=cut
