diff options
Diffstat (limited to 'pjnath/src/pjnath/nat_detect.c')
-rw-r--r-- | pjnath/src/pjnath/nat_detect.c | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/pjnath/src/pjnath/nat_detect.c b/pjnath/src/pjnath/nat_detect.c index 29549465..0d6c1ea0 100644 --- a/pjnath/src/pjnath/nat_detect.c +++ b/pjnath/src/pjnath/nat_detect.c @@ -54,6 +54,14 @@ enum state ST_TEST_3 }; +static const char *test_names[] = +{ + "Test I: Binding request", + "Test II: Binding request with change address and port request", + "Test IB: Binding request to alternate address", + "Test III: Binding request with change port request" +}; + typedef struct nat_detect_session { pj_pool_t *pool; @@ -308,19 +316,17 @@ static pj_status_t start_test(nat_detect_session *sess, /* Create BIND request */ status = pj_stun_session_create_req(sess->stun_sess, - PJ_STUN_BINDING_REQUEST, + PJ_STUN_BINDING_REQUEST, 0x83224, NULL, &tdata); if (status != PJ_SUCCESS) return status; - /* Add CHANGE-REQUEST attribute if necessary */ - if (change_flag) { - status = pj_stun_msg_add_uint_attr(sess->pool, tdata->msg, - PJ_STUN_ATTR_CHANGE_REQUEST, - change_flag); - if (status != PJ_SUCCESS) - return status; - } + /* Add CHANGE-REQUEST attribute */ + status = pj_stun_msg_add_uint_attr(sess->pool, tdata->msg, + PJ_STUN_ATTR_CHANGE_REQUEST, + change_flag); + if (status != PJ_SUCCESS) + return status; /* Configure alternate address */ if (alt_addr) @@ -328,6 +334,12 @@ static pj_status_t start_test(nat_detect_session *sess, else sess->cur_server = &sess->server; + PJ_LOG(5,(sess->pool->obj_name, + "Performing %s to %s:%d", + test_names[state], + pj_inet_ntoa(sess->cur_server->sin_addr), + pj_ntohs(sess->cur_server->sin_port))); + /* Send the request */ status = pj_stun_session_send_msg(sess->stun_sess, PJ_TRUE, sess->cur_server, @@ -561,12 +573,12 @@ static void on_request_complete(pj_stun_session *stun_sess, sizeof(pj_sockaddr_in)); /* Compare mapped address with local address */ - sess->test1_same_ip = (pj_memcmp(&sess->local_addr, &mattr->sockaddr, - sizeof(pj_sockaddr_in))==0); + sess->test1_same_ip=(pj_memcmp(&sess->local_addr, &mattr->sockaddr, + sizeof(pj_sockaddr_in))==0); /* Execute test 2: - * Send BINDING_REQUEST with both the "change IP" and "change port" - * flags from the CHANGE-REQUEST attribute set + * Send BINDING_REQUEST with both the "change IP" and "change port" + * flags from the CHANGE-REQUEST attribute set */ start_test(sess, ST_TEST_2, NULL, CHANGE_ADDR_PORT); @@ -662,3 +674,4 @@ static void on_timer_destroy(pj_timer_heap_t *th, sess_destroy(sess); } + |