mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-07-31 00:03:07 +03:00
torture_connect: Test bad IPv6 connection trying IPv4
If IPv6 address fail to connect IPv4 should be tried in non-blocking mode. Signed-off-by: Norbert Pocs <npocs@redhat.com> Reviewed-by: Jakub Jelen <jjelen@redhat.com>
This commit is contained in:
@ -55,6 +55,9 @@ if (WITH_SFTP)
|
||||
${SFTP_BENCHMARK_TESTS})
|
||||
endif (WITH_SFTP)
|
||||
|
||||
set(TORTURE_CLIENT_ENVIRONMENT ${TORTURE_ENVIRONMENT})
|
||||
list(APPEND TORTURE_CLIENT_ENVIRONMENT NSS_WRAPPER_HOSTS=${CMAKE_BINARY_DIR}/tests/etc/hosts)
|
||||
|
||||
foreach(_CLI_TEST ${LIBSSH_CLIENT_TESTS})
|
||||
add_cmocka_test(${_CLI_TEST}
|
||||
SOURCES ${_CLI_TEST}.c
|
||||
@ -73,6 +76,6 @@ foreach(_CLI_TEST ${LIBSSH_CLIENT_TESTS})
|
||||
TEST
|
||||
${_CLI_TEST}
|
||||
PROPERTY
|
||||
ENVIRONMENT ${TORTURE_ENVIRONMENT})
|
||||
ENVIRONMENT ${TORTURE_CLIENT_ENVIRONMENT})
|
||||
endif()
|
||||
endforeach()
|
||||
|
@ -120,6 +120,29 @@ static void torture_connect_nonblocking(void **state) {
|
||||
assert_ssh_return_code(session, rc);
|
||||
}
|
||||
|
||||
static void torture_connect_ipv6(void **state) {
|
||||
struct torture_state *s = *state;
|
||||
ssh_session session = s->ssh.session;
|
||||
int rc;
|
||||
|
||||
rc = ssh_options_set(session, SSH_OPTIONS_HOST, "testing");
|
||||
assert_ssh_return_code(session, rc);
|
||||
/* set non-blocking mode */
|
||||
ssh_set_blocking(session, 0);
|
||||
|
||||
do {
|
||||
rc = ssh_connect(session);
|
||||
} while (rc == SSH_AGAIN);
|
||||
|
||||
assert_ssh_return_code(session, rc);
|
||||
|
||||
/* should work for blocking mode too */
|
||||
ssh_disconnect(session);
|
||||
ssh_set_blocking(session, 1);
|
||||
rc = ssh_connect(session);
|
||||
assert_ssh_return_code(session, rc);
|
||||
}
|
||||
|
||||
#if 0 /* This does not work with socket_wrapper */
|
||||
static void torture_connect_timeout(void **state) {
|
||||
struct torture_state *s = *state;
|
||||
@ -240,6 +263,7 @@ int torture_run_tests(void) {
|
||||
struct CMUnitTest tests[] = {
|
||||
cmocka_unit_test_setup_teardown(torture_connect_peer_discon_msg, session_setup, session_teardown),
|
||||
cmocka_unit_test_setup_teardown(torture_connect_nonblocking, session_setup, session_teardown),
|
||||
cmocka_unit_test_setup_teardown(torture_connect_ipv6, session_setup, session_teardown),
|
||||
cmocka_unit_test_setup_teardown(torture_connect_double, session_setup, session_teardown),
|
||||
cmocka_unit_test_setup_teardown(torture_connect_failure, session_setup, session_teardown),
|
||||
#if 0
|
||||
|
@ -1,2 +1,5 @@
|
||||
127.0.0.10 server.libssh.site
|
||||
127.0.0.21 client.libssh.site
|
||||
|
||||
123.0.0.11 testing
|
||||
fd00::5357:5f0a testing
|
||||
|
@ -730,6 +730,7 @@ static void torture_setup_create_sshd_config(void **state, bool pam)
|
||||
const char config_string[]=
|
||||
"Port 22\n"
|
||||
"ListenAddress 127.0.0.10\n"
|
||||
"ListenAddress fd00::5357:5f0a\n"
|
||||
"%s %s\n" /* ed25519 HostKey */
|
||||
"%s %s\n" /* RSA HostKey */
|
||||
"%s %s\n" /* ECDSA HostKey */
|
||||
@ -765,6 +766,7 @@ static void torture_setup_create_sshd_config(void **state, bool pam)
|
||||
const char fips_config_string[]=
|
||||
"Port 22\n"
|
||||
"ListenAddress 127.0.0.10\n"
|
||||
"ListenAddress fd00::5357:5f0a\n"
|
||||
"%s %s\n" /* RSA HostKey */
|
||||
"%s %s\n" /* ECDSA HostKey */
|
||||
"\n"
|
||||
|
@ -46,6 +46,7 @@
|
||||
#endif /* assert_return_code */
|
||||
|
||||
#define TORTURE_SSH_SERVER "127.0.0.10"
|
||||
#define TORTURE_SSH_SERVER_IP6 "fd00::5357:5f0a"
|
||||
#define TORTURE_SSH_USER_BOB "bob"
|
||||
#define TORTURE_SSH_USER_BOB_PASSWORD "secret"
|
||||
|
||||
|
Reference in New Issue
Block a user