summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-10-13 00:06:59 +0000
committerBenny Prijono <bennylp@teluu.com>2007-10-13 00:06:59 +0000
commitfbad5a077dfa90b0275d683f49cd90244b7d0bee (patch)
treef5719c15afb73737c22f8e5864dd19c015ac4152
parent22e1dd64b99f1605098e06d35f4c5dd6220a90e2 (diff)
Added "magic" parameter in pj_stun_session_create_req()
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1498 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjnath/include/pjnath/stun_session.h2
-rw-r--r--pjnath/src/pjnath/ice_session.c2
-rw-r--r--pjnath/src/pjnath/ice_strans.c2
-rw-r--r--pjnath/src/pjnath/nat_detect.c39
-rw-r--r--pjnath/src/pjnath/stun_session.c6
-rw-r--r--pjnath/src/pjstun-client/client_main.c6
6 files changed, 38 insertions, 19 deletions
diff --git a/pjnath/include/pjnath/stun_session.h b/pjnath/include/pjnath/stun_session.h
index 6b5514d4..e0d93d31 100644
--- a/pjnath/include/pjnath/stun_session.h
+++ b/pjnath/include/pjnath/stun_session.h
@@ -259,6 +259,7 @@ PJ_DECL(void) pj_stun_session_set_credential(pj_stun_session *sess,
* @param sess The STUN session instance.
* @param msg_type The STUN request message type, from pj_stun_method_e or
* from pj_stun_msg_type.
+ * @param magic STUN magic, use PJ_STUN_MAGIC.
* @param tsx_id Optional transaction ID.
* @param p_tdata Pointer to receive STUN transmit data instance containing
* the request.
@@ -267,6 +268,7 @@ PJ_DECL(void) pj_stun_session_set_credential(pj_stun_session *sess,
*/
PJ_DECL(pj_status_t) pj_stun_session_create_req(pj_stun_session *sess,
int msg_type,
+ pj_uint32_t magic,
const pj_uint8_t tsx_id[12],
pj_stun_tx_data **p_tdata);
diff --git a/pjnath/src/pjnath/ice_session.c b/pjnath/src/pjnath/ice_session.c
index 695c66d0..45e1146f 100644
--- a/pjnath/src/pjnath/ice_session.c
+++ b/pjnath/src/pjnath/ice_session.c
@@ -1376,7 +1376,7 @@ static pj_status_t perform_check(pj_ice_sess *ice,
/* Create request */
status = pj_stun_session_create_req(comp->stun_sess,
- PJ_STUN_BINDING_REQUEST,
+ PJ_STUN_BINDING_REQUEST, PJ_STUN_MAGIC,
NULL, &check->tdata);
if (status != PJ_SUCCESS) {
pjnath_perror(ice->obj_name, "Error creating STUN request", status);
diff --git a/pjnath/src/pjnath/ice_strans.c b/pjnath/src/pjnath/ice_strans.c
index f8a20d19..d44bec0c 100644
--- a/pjnath/src/pjnath/ice_strans.c
+++ b/pjnath/src/pjnath/ice_strans.c
@@ -577,6 +577,7 @@ static void ka_timer_cb(pj_timer_heap_t *th, pj_timer_entry *te)
/* Create STUN binding request */
status = pj_stun_session_create_req(comp->stun_sess,
PJ_STUN_BINDING_REQUEST,
+ PJ_STUN_MAGIC,
comp->ka_tsx_id, &tdata);
if (status != PJ_SUCCESS)
continue;
@@ -678,6 +679,7 @@ static pj_status_t get_stun_mapped_addr(pj_ice_strans *ice_st,
/* Create STUN binding request */
status = pj_stun_session_create_req(comp->stun_sess,
PJ_STUN_BINDING_REQUEST,
+ PJ_STUN_MAGIC,
comp->ka_tsx_id,
&tdata);
if (status != PJ_SUCCESS)
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);
}
+
diff --git a/pjnath/src/pjnath/stun_session.c b/pjnath/src/pjnath/stun_session.c
index 929f114d..43abb19f 100644
--- a/pjnath/src/pjnath/stun_session.c
+++ b/pjnath/src/pjnath/stun_session.c
@@ -126,6 +126,7 @@ static pj_status_t create_tdata(pj_stun_session *sess,
static pj_status_t create_request_tdata(pj_stun_session *sess,
unsigned msg_type,
+ pj_uint32_t magic,
const pj_uint8_t tsx_id[12],
pj_stun_tx_data **p_tdata)
{
@@ -137,7 +138,7 @@ static pj_status_t create_request_tdata(pj_stun_session *sess,
return status;
/* Create STUN message */
- status = pj_stun_msg_create(tdata->pool, msg_type, PJ_STUN_MAGIC,
+ status = pj_stun_msg_create(tdata->pool, msg_type, magic,
tsx_id, &tdata->msg);
if (status != PJ_SUCCESS) {
pj_pool_release(tdata->pool);
@@ -476,6 +477,7 @@ PJ_DEF(void) pj_stun_session_set_credential(pj_stun_session *sess,
PJ_DEF(pj_status_t) pj_stun_session_create_req(pj_stun_session *sess,
int method,
+ pj_uint32_t magic,
const pj_uint8_t tsx_id[12],
pj_stun_tx_data **p_tdata)
{
@@ -484,7 +486,7 @@ PJ_DEF(pj_status_t) pj_stun_session_create_req(pj_stun_session *sess,
PJ_ASSERT_RETURN(sess && p_tdata, PJ_EINVAL);
- status = create_request_tdata(sess, method, tsx_id, &tdata);
+ status = create_request_tdata(sess, method, magic, tsx_id, &tdata);
if (status != PJ_SUCCESS)
return status;
diff --git a/pjnath/src/pjstun-client/client_main.c b/pjnath/src/pjstun-client/client_main.c
index ac828925..d3b21e13 100644
--- a/pjnath/src/pjstun-client/client_main.c
+++ b/pjnath/src/pjstun-client/client_main.c
@@ -375,7 +375,7 @@ static void send_bind_request(void)
pj_status_t rc;
rc = pj_stun_session_create_req(g.sess, PJ_STUN_BINDING_REQUEST,
- NULL, &tdata);
+ PJ_STUN_MAGIC, NULL, &tdata);
pj_assert(rc == PJ_SUCCESS);
rc = pj_stun_session_send_msg(g.sess, PJ_FALSE,
@@ -391,7 +391,7 @@ static void send_allocate_request(pj_bool_t allocate)
pj_status_t rc;
rc = pj_stun_session_create_req(g.sess, PJ_STUN_ALLOCATE_REQUEST,
- NULL, &tdata);
+ PJ_STUN_MAGIC, NULL, &tdata);
pj_assert(rc == PJ_SUCCESS);
@@ -451,7 +451,7 @@ static void send_sad_request(pj_bool_t set)
rc = pj_stun_session_create_req(g.sess,
PJ_STUN_SET_ACTIVE_DESTINATION_REQUEST,
- NULL, &tdata);
+ PJ_STUN_MAGIC, NULL, &tdata);
pj_assert(rc == PJ_SUCCESS);
if (set) {