diff options
author | Riza Sulistyo <riza@teluu.com> | 2016-07-15 15:02:09 +0000 |
---|---|---|
committer | Riza Sulistyo <riza@teluu.com> | 2016-07-15 15:02:09 +0000 |
commit | 7a699191da6f8484d35646dc48162a91545c875f (patch) | |
tree | 19c358589ddec31b8337d643f1276b2264721115 /pjnath/src/pjnath-test/ice_test.c | |
parent | e85eec1b45c88efce0ce2bc4557f31cd3516ddae (diff) |
Re #1933: Handle link-local address that cause the test to fail.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5387 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjnath/src/pjnath-test/ice_test.c')
-rw-r--r-- | pjnath/src/pjnath-test/ice_test.c | 101 |
1 files changed, 63 insertions, 38 deletions
diff --git a/pjnath/src/pjnath-test/ice_test.c b/pjnath/src/pjnath-test/ice_test.c index dfd7b84d..80f8c480 100644 --- a/pjnath/src/pjnath-test/ice_test.c +++ b/pjnath/src/pjnath-test/ice_test.c @@ -124,6 +124,29 @@ static void ice_on_ice_complete(pj_ice_strans *ice_st, pj_status_t status); static void destroy_sess(struct test_sess *sess, unsigned wait_msec); +#if USE_IPV6 + +static pj_bool_t enable_ipv6_test() +{ + pj_sockaddr addr; + pj_bool_t retval = PJ_TRUE; + if (pj_gethostip(pj_AF_INET6(), &addr) == PJ_SUCCESS) { + const pj_in6_addr *a = &addr.ipv6.sin6_addr; + if (a->s6_addr[0] == 0xFE && (a->s6_addr[1] & 0xC0) == 0x80) { + retval = PJ_FALSE; + PJ_LOG(3,(THIS_FILE, INDENT "Skipping IPv6 test due to link-local " + "address")); + } + } else { + retval = PJ_FALSE; + PJ_LOG(3,(THIS_FILE, INDENT "Skipping IPv6 test due to fail getting " + "IPv6 address")); + } + return retval; +} + +#endif + static void set_stun_turn_cfg(struct ice_ept *ept, pj_ice_strans_cfg *ice_cfg, char *serverip, @@ -787,47 +810,49 @@ static int perform_test(const char *title, callee_cfg, &test_param); #if USE_IPV6 - /* Test for IPV6. */ - if (rc == PJ_SUCCESS) { - pj_bzero(&test_param, sizeof(test_param)); - set_client_server_flag(SERVER_IPV6, CLIENT_IPV6, CLIENT_IPV6, - &server_flag, &caller_cfg->client_flag, - &callee_cfg->client_flag); - - rc = perform_test2(title, stun_cfg, server_flag, caller_cfg, - callee_cfg, &test_param); - } + if (enable_ipv6_test()) { - /* Test for IPV4+IPV6. */ - if (rc == PJ_SUCCESS) { - pj_bzero(&test_param, sizeof(test_param)); - set_client_server_flag(SERVER_IPV4+SERVER_IPV6, - CLIENT_IPV4+CLIENT_IPV6, - CLIENT_IPV4+CLIENT_IPV6, - &server_flag, - &caller_cfg->client_flag, - &callee_cfg->client_flag); - - rc = perform_test2(title, stun_cfg, server_flag, caller_cfg, - callee_cfg, &test_param); - } + /* Test for IPV6. */ + if (rc == PJ_SUCCESS) { + pj_bzero(&test_param, sizeof(test_param)); + set_client_server_flag(SERVER_IPV6, CLIENT_IPV6, CLIENT_IPV6, + &server_flag, &caller_cfg->client_flag, + &callee_cfg->client_flag); - /* Test controller(IPV4) vs controlled(IPV6). */ - if (rc == PJ_SUCCESS) { - pj_bzero(&test_param, sizeof(test_param)); - set_client_server_flag(SERVER_IPV4+SERVER_IPV6, - CLIENT_IPV4, - CLIENT_IPV6, - &server_flag, - &caller_cfg->client_flag, - &callee_cfg->client_flag); - caller_cfg->expected.start_status = PJ_ENOTFOUND; - callee_cfg->expected.start_status = PJ_ENOTFOUND; - - rc = perform_test2(title, stun_cfg, server_flag, caller_cfg, - callee_cfg, &test_param); - } + rc = perform_test2(title, stun_cfg, server_flag, caller_cfg, + callee_cfg, &test_param); + } + /* Test for IPV4+IPV6. */ + if (rc == PJ_SUCCESS) { + pj_bzero(&test_param, sizeof(test_param)); + set_client_server_flag(SERVER_IPV4+SERVER_IPV6, + CLIENT_IPV4+CLIENT_IPV6, + CLIENT_IPV4+CLIENT_IPV6, + &server_flag, + &caller_cfg->client_flag, + &callee_cfg->client_flag); + + rc = perform_test2(title, stun_cfg, server_flag, caller_cfg, + callee_cfg, &test_param); + } + + /* Test controller(IPV4) vs controlled(IPV6). */ + if (rc == PJ_SUCCESS) { + pj_bzero(&test_param, sizeof(test_param)); + set_client_server_flag(SERVER_IPV4+SERVER_IPV6, + CLIENT_IPV4, + CLIENT_IPV6, + &server_flag, + &caller_cfg->client_flag, + &callee_cfg->client_flag); + caller_cfg->expected.start_status = PJ_ENOTFOUND; + callee_cfg->expected.start_status = PJ_ENOTFOUND; + + rc = perform_test2(title, stun_cfg, server_flag, caller_cfg, + callee_cfg, &test_param); + } + } #endif callee_cfg->expected.start_status = expected_callee_start_ice; caller_cfg->expected.start_status = expected_caller_start_ice; |