summaryrefslogtreecommitdiffstats
path: root/tinyNET/test/test_stun.h
diff options
context:
space:
mode:
Diffstat (limited to 'tinyNET/test/test_stun.h')
-rwxr-xr-xtinyNET/test/test_stun.h290
1 files changed, 141 insertions, 149 deletions
diff --git a/tinyNET/test/test_stun.h b/tinyNET/test/test_stun.h
index 58fc9b1..cc9033b 100755
--- a/tinyNET/test/test_stun.h
+++ b/tinyNET/test/test_stun.h
@@ -65,79 +65,79 @@ static int test_stun_buff_cmp(const uint8_t* pc_buf1_ptr, tsk_size_t n_buff1_siz
static void test_stun_parser()
{
- tnet_stun_pkt_t* p_pkt = tsk_null;
- tsk_size_t n_written_bytes, n_read_bytes;
- static const char* __pc_mapped_addr_ipv4 = "192.168.0.37";
- static const char* __pc_mapped_addr_ipv6 = "fdf8:f53b:82e4::53";
- static const uint16_t __u_mapped_addr_port = 5060;
- static const char __pc_username[] = "Mamadou DIOP";
- static const uint16_t __u_username = sizeof(__pc_username);
- static const char __pc_integrity[TSK_SHA1_DIGEST_SIZE] = { 0 };
- static const uint16_t __u_integrity = sizeof(__pc_integrity);
- static const uint32_t __u_fingerprint = 19831983;
- static const uint8_t __u_error_class = 4; // (4 * 100) = 404
- static const uint8_t __u_error_number = 4; // + 4 = 404
- static const char* __pc_error_reason = "Not Found";
- tnet_stun_addr_t addr_ipv4, addr_ipv6;
- static const char __pc_realm[] = "doubango.org";
- static const uint16_t __u_realm = sizeof(__pc_realm);
- static const char __pc_nonce[128] = { 0 };
- static const uint16_t __u_nonce = sizeof(__pc_nonce);
- static const char __pc_software[] = "tinyNET 2.0";
- static const uint16_t __u_software = sizeof(__pc_software);
- static const uint32_t __u_life_time = 600;
- static const uint32_t __u_req_transport = 17; // UDP
+ tnet_stun_pkt_t* p_pkt = tsk_null;
+ tsk_size_t n_written_bytes, n_read_bytes;
+ static const char* __pc_mapped_addr_ipv4 = "192.168.0.37";
+ static const char* __pc_mapped_addr_ipv6 = "fdf8:f53b:82e4::53";
+ static const uint16_t __u_mapped_addr_port = 5060;
+ static const char __pc_username[] = "Mamadou DIOP";
+ static const uint16_t __u_username = sizeof(__pc_username);
+ static const char __pc_integrity[TSK_SHA1_DIGEST_SIZE] = { 0 };
+ static const uint16_t __u_integrity = sizeof(__pc_integrity);
+ static const uint32_t __u_fingerprint = 19831983;
+ static const uint8_t __u_error_class = 4; // (4 * 100) = 404
+ static const uint8_t __u_error_number = 4; // + 4 = 404
+ static const char* __pc_error_reason = "Not Found";
+ tnet_stun_addr_t addr_ipv4, addr_ipv6;
+ static const char __pc_realm[] = "doubango.org";
+ static const uint16_t __u_realm = sizeof(__pc_realm);
+ static const char __pc_nonce[128] = { 0 };
+ static const uint16_t __u_nonce = sizeof(__pc_nonce);
+ static const char __pc_software[] = "tinyNET 2.0";
+ static const uint16_t __u_software = sizeof(__pc_software);
+ static const uint32_t __u_life_time = 600;
+ static const uint32_t __u_req_transport = 17; // UDP
(n_read_bytes);
- BAIL_IF_ERR(tnet_stun_pkt_create_empty(tnet_stun_pkt_type_binding_request, &p_pkt));
- BAIL_IF_ERR(tnet_stun_utils_inet_pton_v4(__pc_mapped_addr_ipv4, &addr_ipv4));
- BAIL_IF_ERR(tnet_stun_utils_inet_pton_v6(__pc_mapped_addr_ipv6, &addr_ipv6));
- BAIL_IF_ERR(tnet_stun_pkt_attrs_add(p_pkt,
- TNET_STUN_PKT_ATTR_ADD_MAPPED_ADDRESS_V4(__u_mapped_addr_port, &addr_ipv4),
- TNET_STUN_PKT_ATTR_ADD_MAPPED_ADDRESS_V6(__u_mapped_addr_port, &addr_ipv6),
- TNET_STUN_PKT_ATTR_ADD_XOR_MAPPED_ADDRESS_V4(__u_mapped_addr_port, &addr_ipv4),
- TNET_STUN_PKT_ATTR_ADD_XOR_MAPPED_ADDRESS_V6(__u_mapped_addr_port, &addr_ipv6),
- TNET_STUN_PKT_ATTR_ADD_USERNAME_ZT(__pc_username),
- TNET_STUN_PKT_ATTR_ADD_MESSAGE_INTEGRITY(__pc_integrity, __u_integrity),
- TNET_STUN_PKT_ATTR_ADD_ERROR_CODE(__u_error_class, __u_error_number, __pc_error_reason),
- TNET_STUN_PKT_ATTR_ADD_ERROR_CODE_TRY_ALTERNATE(),
- TNET_STUN_PKT_ATTR_ADD_ERROR_CODE_BAD_REQUEST(),
- TNET_STUN_PKT_ATTR_ADD_ERROR_CODE_UNAUTHORIZED(),
- TNET_STUN_PKT_ATTR_ADD_ERROR_CODE_UNKNOWN_ATTRIBUTE(),
- TNET_STUN_PKT_ATTR_ADD_ERROR_CODE_STALE_NONCE(),
- TNET_STUN_PKT_ATTR_ADD_ERROR_CODE_SERVER_ERROR(),
- TNET_STUN_PKT_ATTR_ADD_REALM_ZT(__pc_realm),
- TNET_STUN_PKT_ATTR_ADD_NONCE(__pc_nonce, __u_nonce),
-
- TNET_STUN_PKT_ATTR_ADD_UNKNOWN_ATTRS(
- TNET_STUN_PKT_ATTR_ADD_UNKNOWN_ATTRS_VAL(0x0001), // MAPPED-ADDRESS
- TNET_STUN_PKT_ATTR_ADD_UNKNOWN_ATTRS_VAL(0x0006), // USERNAME
- TNET_STUN_PKT_ATTR_ADD_UNKNOWN_ATTRS_VAL(0x0007), // PASSWORD
- TNET_STUN_PKT_ATTR_ADD_NULL()),
-
- TNET_STUN_PKT_ATTR_ADD_SOFTWARE_ZT(__pc_software),
- TNET_STUN_PKT_ATTR_ADD_ALTERNATE_SERVER_V4(__u_mapped_addr_port, &addr_ipv4),
- TNET_STUN_PKT_ATTR_ADD_ALTERNATE_SERVER_V6(__u_mapped_addr_port, &addr_ipv6),
- TNET_STUN_PKT_ATTR_ADD_LIFETIME(__u_life_time),
- TNET_STUN_PKT_ATTR_ADD_REQUESTED_TRANSPORT(__u_req_transport),
- TNET_STUN_PKT_ATTR_ADD_DONT_FRAGMENT(),
-
- TNET_STUN_PKT_ATTR_ADD_FINGERPRINT(__u_fingerprint),
- TNET_STUN_PKT_ATTR_ADD_NULL()));
- BAIL_IF_ERR(tnet_stun_pkt_write_with_padding(p_pkt, __parse_buff_write_ptr, __parse_buff_write_size, &n_written_bytes));
- TNET_TEST_STUN_SEND_BUFF(__parse_buff_write_ptr, n_written_bytes);
-
- TSK_OBJECT_SAFE_FREE(p_pkt);
- BAIL_IF_ERR(tnet_stun_pkt_read(__parse_buff_write_ptr, n_written_bytes, &p_pkt));
- BAIL_IF_ERR(tnet_stun_pkt_write_with_padding(p_pkt, __parse_buff_read_ptr, __parse_buff_read_size, &n_read_bytes));
- //TNET_TEST_STUN_SEND_BUFF(__parse_buff_read_ptr, n_read_bytes);
-
- BAIL_IF_ERR(test_stun_buff_cmp(__parse_buff_write_ptr, n_written_bytes, __parse_buff_read_ptr, n_read_bytes));
+ BAIL_IF_ERR(tnet_stun_pkt_create_empty(tnet_stun_pkt_type_binding_request, &p_pkt));
+ BAIL_IF_ERR(tnet_stun_utils_inet_pton_v4(__pc_mapped_addr_ipv4, &addr_ipv4));
+ BAIL_IF_ERR(tnet_stun_utils_inet_pton_v6(__pc_mapped_addr_ipv6, &addr_ipv6));
+ BAIL_IF_ERR(tnet_stun_pkt_attrs_add(p_pkt,
+ TNET_STUN_PKT_ATTR_ADD_MAPPED_ADDRESS_V4(__u_mapped_addr_port, &addr_ipv4),
+ TNET_STUN_PKT_ATTR_ADD_MAPPED_ADDRESS_V6(__u_mapped_addr_port, &addr_ipv6),
+ TNET_STUN_PKT_ATTR_ADD_XOR_MAPPED_ADDRESS_V4(__u_mapped_addr_port, &addr_ipv4),
+ TNET_STUN_PKT_ATTR_ADD_XOR_MAPPED_ADDRESS_V6(__u_mapped_addr_port, &addr_ipv6),
+ TNET_STUN_PKT_ATTR_ADD_USERNAME_ZT(__pc_username),
+ TNET_STUN_PKT_ATTR_ADD_MESSAGE_INTEGRITY(__pc_integrity, __u_integrity),
+ TNET_STUN_PKT_ATTR_ADD_ERROR_CODE(__u_error_class, __u_error_number, __pc_error_reason),
+ TNET_STUN_PKT_ATTR_ADD_ERROR_CODE_TRY_ALTERNATE(),
+ TNET_STUN_PKT_ATTR_ADD_ERROR_CODE_BAD_REQUEST(),
+ TNET_STUN_PKT_ATTR_ADD_ERROR_CODE_UNAUTHORIZED(),
+ TNET_STUN_PKT_ATTR_ADD_ERROR_CODE_UNKNOWN_ATTRIBUTE(),
+ TNET_STUN_PKT_ATTR_ADD_ERROR_CODE_STALE_NONCE(),
+ TNET_STUN_PKT_ATTR_ADD_ERROR_CODE_SERVER_ERROR(),
+ TNET_STUN_PKT_ATTR_ADD_REALM_ZT(__pc_realm),
+ TNET_STUN_PKT_ATTR_ADD_NONCE(__pc_nonce, __u_nonce),
+
+ TNET_STUN_PKT_ATTR_ADD_UNKNOWN_ATTRS(
+ TNET_STUN_PKT_ATTR_ADD_UNKNOWN_ATTRS_VAL(0x0001), // MAPPED-ADDRESS
+ TNET_STUN_PKT_ATTR_ADD_UNKNOWN_ATTRS_VAL(0x0006), // USERNAME
+ TNET_STUN_PKT_ATTR_ADD_UNKNOWN_ATTRS_VAL(0x0007), // PASSWORD
+ TNET_STUN_PKT_ATTR_ADD_NULL()),
+
+ TNET_STUN_PKT_ATTR_ADD_SOFTWARE_ZT(__pc_software),
+ TNET_STUN_PKT_ATTR_ADD_ALTERNATE_SERVER_V4(__u_mapped_addr_port, &addr_ipv4),
+ TNET_STUN_PKT_ATTR_ADD_ALTERNATE_SERVER_V6(__u_mapped_addr_port, &addr_ipv6),
+ TNET_STUN_PKT_ATTR_ADD_LIFETIME(__u_life_time),
+ TNET_STUN_PKT_ATTR_ADD_REQUESTED_TRANSPORT(__u_req_transport),
+ TNET_STUN_PKT_ATTR_ADD_DONT_FRAGMENT(),
+
+ TNET_STUN_PKT_ATTR_ADD_FINGERPRINT(__u_fingerprint),
+ TNET_STUN_PKT_ATTR_ADD_NULL()));
+ BAIL_IF_ERR(tnet_stun_pkt_write_with_padding(p_pkt, __parse_buff_write_ptr, __parse_buff_write_size, &n_written_bytes));
+ TNET_TEST_STUN_SEND_BUFF(__parse_buff_write_ptr, n_written_bytes);
+
+ TSK_OBJECT_SAFE_FREE(p_pkt);
+ BAIL_IF_ERR(tnet_stun_pkt_read(__parse_buff_write_ptr, n_written_bytes, &p_pkt));
+ BAIL_IF_ERR(tnet_stun_pkt_write_with_padding(p_pkt, __parse_buff_read_ptr, __parse_buff_read_size, &n_read_bytes));
+ //TNET_TEST_STUN_SEND_BUFF(__parse_buff_read_ptr, n_read_bytes);
+
+ BAIL_IF_ERR(test_stun_buff_cmp(__parse_buff_write_ptr, n_written_bytes, __parse_buff_read_ptr, n_read_bytes));
TSK_DEBUG_INFO("test_stun_parser...OK");
bail:
- TSK_OBJECT_SAFE_FREE(p_pkt);
+ TSK_OBJECT_SAFE_FREE(p_pkt);
}
static struct tnet_turn_session_s* __pc_ss1 = tsk_null;
@@ -153,103 +153,95 @@ static tnet_turn_peer_id_t __u_peer_id2 = kTurnPeerIdInvalid;
static int _test_turn_session_callback(const struct tnet_turn_session_event_xs *e)
{
- const struct tnet_turn_session_s* pc_ss = (const struct tnet_turn_session_s*)e->pc_usr_data;
- int ret = 0;
- switch (e->e_type) {
- case tnet_turn_session_event_type_alloc_ok:
- {
- uint16_t *pu_port = (pc_ss == __pc_ss2) ? &__u_rel_port_ss1 : &__u_rel_port_ss2;
- char** pp_ip = (pc_ss == __pc_ss2) ? &__p_rel_ip_ss1 : &__p_rel_ip_ss2;
- tsk_bool_t *pb_ipv6 = (pc_ss == __pc_ss2) ? &__b_rel_ipv6_ss1 : &__b_rel_ipv6_ss2;
- tnet_turn_peer_id_t *pu_peer_id = (pc_ss == __pc_ss2) ? &__u_peer_id2 : &__u_peer_id1;
-
- BAIL_IF_ERR(tnet_turn_session_get_relayed_addr(pc_ss, pp_ip, pu_port, pb_ipv6));
- // BAIL_IF_ERR(tnet_turn_session_get_srflx_addr(pc_ss, pu_port, &u_port, &b_ipv6)); // get my own server reflexive address (in order to send data to myself)
- BAIL_IF_ERR(tnet_turn_session_createpermission((struct tnet_turn_session_s*)pc_ss, *pp_ip, *pu_port, pu_peer_id)); // Input = ADDR(remote.candidate.relay)
- break;
- }
- case tnet_turn_session_event_type_alloc_nok:
- {
- TSK_DEBUG_INFO("*** TURN ALLOC NOK ***");
- break;
- }
- case tnet_turn_session_event_type_perm_ok:
- {
- static const char __pc_data[] = { "TURN Sample Data (Send Indication)" };
- int i;
- tnet_turn_peer_id_t u_peer_id = (pc_ss == __pc_ss2) ? __u_peer_id2 : __u_peer_id1;
- // Bind a channel (not required). If succeed, will be used to save data.
- tnet_turn_session_chanbind((struct tnet_turn_session_s*)pc_ss, u_peer_id);
- // Send data (will use channel if one is active. Otherwise (no channel), SendIndications will be used)
- for (i = 0; i < 10; ++i) {
- BAIL_IF_ERR(tnet_turn_session_send_data((struct tnet_turn_session_s*)pc_ss, u_peer_id, __pc_data, sizeof(__pc_data)));
- }
- break;
- }
- case tnet_turn_session_event_type_perm_nok:
- {
- TSK_DEBUG_INFO("*** TURN PERM NOK ***");
- break;
- }
- case tnet_turn_session_event_type_chanbind_ok:
- {
- static const char __pc_data[] = { "TURN Sample Data (ChannelData)" };
- int i;
- tnet_turn_peer_id_t u_peer_id = (pc_ss == __pc_ss2) ? __u_peer_id2 : __u_peer_id1;
- for (i = 0; i < 10; ++i) {
- BAIL_IF_ERR(tnet_turn_session_send_data((struct tnet_turn_session_s*)pc_ss, u_peer_id, __pc_data, sizeof(__pc_data)));
- }
- break;
- }
- case tnet_turn_session_event_type_chanbind_nok:
- {
- TSK_DEBUG_INFO("*** TURN CHANBIND NOK ***");
- break;
- }
- case tnet_turn_session_event_type_recv_data:
- {
- TSK_DEBUG_INFO("RECV DATA:%.*s", e->data.u_data_size, (const char*)e->data.pc_data_ptr);
- break;
- }
- default:
- {
- break;
- }
- }
+ const struct tnet_turn_session_s* pc_ss = (const struct tnet_turn_session_s*)e->pc_usr_data;
+ int ret = 0;
+ switch (e->e_type) {
+ case tnet_turn_session_event_type_alloc_ok: {
+ uint16_t *pu_port = (pc_ss == __pc_ss2) ? &__u_rel_port_ss1 : &__u_rel_port_ss2;
+ char** pp_ip = (pc_ss == __pc_ss2) ? &__p_rel_ip_ss1 : &__p_rel_ip_ss2;
+ tsk_bool_t *pb_ipv6 = (pc_ss == __pc_ss2) ? &__b_rel_ipv6_ss1 : &__b_rel_ipv6_ss2;
+ tnet_turn_peer_id_t *pu_peer_id = (pc_ss == __pc_ss2) ? &__u_peer_id2 : &__u_peer_id1;
+
+ BAIL_IF_ERR(tnet_turn_session_get_relayed_addr(pc_ss, pp_ip, pu_port, pb_ipv6));
+ // BAIL_IF_ERR(tnet_turn_session_get_srflx_addr(pc_ss, pu_port, &u_port, &b_ipv6)); // get my own server reflexive address (in order to send data to myself)
+ BAIL_IF_ERR(tnet_turn_session_createpermission((struct tnet_turn_session_s*)pc_ss, *pp_ip, *pu_port, pu_peer_id)); // Input = ADDR(remote.candidate.relay)
+ break;
+ }
+ case tnet_turn_session_event_type_alloc_nok: {
+ TSK_DEBUG_INFO("*** TURN ALLOC NOK ***");
+ break;
+ }
+ case tnet_turn_session_event_type_perm_ok: {
+ static const char __pc_data[] = { "TURN Sample Data (Send Indication)" };
+ int i;
+ tnet_turn_peer_id_t u_peer_id = (pc_ss == __pc_ss2) ? __u_peer_id2 : __u_peer_id1;
+ // Bind a channel (not required). If succeed, will be used to save data.
+ tnet_turn_session_chanbind((struct tnet_turn_session_s*)pc_ss, u_peer_id);
+ // Send data (will use channel if one is active. Otherwise (no channel), SendIndications will be used)
+ for (i = 0; i < 10; ++i) {
+ BAIL_IF_ERR(tnet_turn_session_send_data((struct tnet_turn_session_s*)pc_ss, u_peer_id, __pc_data, sizeof(__pc_data)));
+ }
+ break;
+ }
+ case tnet_turn_session_event_type_perm_nok: {
+ TSK_DEBUG_INFO("*** TURN PERM NOK ***");
+ break;
+ }
+ case tnet_turn_session_event_type_chanbind_ok: {
+ static const char __pc_data[] = { "TURN Sample Data (ChannelData)" };
+ int i;
+ tnet_turn_peer_id_t u_peer_id = (pc_ss == __pc_ss2) ? __u_peer_id2 : __u_peer_id1;
+ for (i = 0; i < 10; ++i) {
+ BAIL_IF_ERR(tnet_turn_session_send_data((struct tnet_turn_session_s*)pc_ss, u_peer_id, __pc_data, sizeof(__pc_data)));
+ }
+ break;
+ }
+ case tnet_turn_session_event_type_chanbind_nok: {
+ TSK_DEBUG_INFO("*** TURN CHANBIND NOK ***");
+ break;
+ }
+ case tnet_turn_session_event_type_recv_data: {
+ TSK_DEBUG_INFO("RECV DATA:%.*s", e->data.u_data_size, (const char*)e->data.pc_data_ptr);
+ break;
+ }
+ default: {
+ break;
+ }
+ }
bail:
- return ret;
+ return ret;
}
static void test_turn_session()
{
- BAIL_IF_ERR(tnet_turn_session_create_udp_ipv4(tnet_turn_transport_udp, kStunServerIP, kStunServerPort, &__pc_ss1));
- BAIL_IF_ERR(tnet_turn_session_set_callback(__pc_ss1, _test_turn_session_callback, __pc_ss1));
- BAIL_IF_ERR(tnet_turn_session_set_cred(__pc_ss1, kStunUsrName, kStunPwd));
- BAIL_IF_ERR(tnet_turn_session_prepare(__pc_ss1));
- BAIL_IF_ERR(tnet_turn_session_start(__pc_ss1));
+ BAIL_IF_ERR(tnet_turn_session_create_udp_ipv4(tnet_turn_transport_udp, kStunServerIP, kStunServerPort, &__pc_ss1));
+ BAIL_IF_ERR(tnet_turn_session_set_callback(__pc_ss1, _test_turn_session_callback, __pc_ss1));
+ BAIL_IF_ERR(tnet_turn_session_set_cred(__pc_ss1, kStunUsrName, kStunPwd));
+ BAIL_IF_ERR(tnet_turn_session_prepare(__pc_ss1));
+ BAIL_IF_ERR(tnet_turn_session_start(__pc_ss1));
- BAIL_IF_ERR(tnet_turn_session_create_udp_ipv4(tnet_turn_transport_udp, kStunServerIP, kStunServerPort, &__pc_ss2));
- BAIL_IF_ERR(tnet_turn_session_set_callback(__pc_ss2, _test_turn_session_callback, __pc_ss2));
- BAIL_IF_ERR(tnet_turn_session_set_cred(__pc_ss2, kStunUsrName, kStunPwd));
- BAIL_IF_ERR(tnet_turn_session_prepare(__pc_ss2));
- BAIL_IF_ERR(tnet_turn_session_start(__pc_ss2));
+ BAIL_IF_ERR(tnet_turn_session_create_udp_ipv4(tnet_turn_transport_udp, kStunServerIP, kStunServerPort, &__pc_ss2));
+ BAIL_IF_ERR(tnet_turn_session_set_callback(__pc_ss2, _test_turn_session_callback, __pc_ss2));
+ BAIL_IF_ERR(tnet_turn_session_set_cred(__pc_ss2, kStunUsrName, kStunPwd));
+ BAIL_IF_ERR(tnet_turn_session_prepare(__pc_ss2));
+ BAIL_IF_ERR(tnet_turn_session_start(__pc_ss2));
- BAIL_IF_ERR(tnet_turn_session_allocate(__pc_ss1));
- BAIL_IF_ERR(tnet_turn_session_allocate(__pc_ss2));
+ BAIL_IF_ERR(tnet_turn_session_allocate(__pc_ss1));
+ BAIL_IF_ERR(tnet_turn_session_allocate(__pc_ss2));
- TSK_DEBUG_INFO("*** Press ENTER to continue ***");
- getchar();
+ TSK_DEBUG_INFO("*** Press ENTER to continue ***");
+ getchar();
bail:
- TSK_OBJECT_SAFE_FREE(__pc_ss1);
- TSK_OBJECT_SAFE_FREE(__pc_ss2);
+ TSK_OBJECT_SAFE_FREE(__pc_ss1);
+ TSK_OBJECT_SAFE_FREE(__pc_ss2);
}
static void test_stun()
{
- //test_stun_parser();
- test_turn_session();
+ //test_stun_parser();
+ test_turn_session();
}
#endif /* TNET_TEST_STUN_H */
OpenPOWER on IntegriCloud