Commit 03dce9b3 authored by Youness Alaoui's avatar Youness Alaoui

Porting the unit tests to use the new stun API

parent 95c34a4b
...@@ -49,15 +49,6 @@ ...@@ -49,15 +49,6 @@
#ifdef _WIN32 #ifdef _WIN32
#include <winsock2.h> #include <winsock2.h>
#include <ws2tcpip.h> #include <ws2tcpip.h>
#define ENOENT -1
#define EINVAL -2
#define ENOBUFS -3
#define EAFNOSUPPORT -4
#define EPROTO -5
#define EACCES -6
#define EINPROGRESS -7
#define EAGAIN -8
#define ENOSYS -9
#define MSG_DONTWAIT 0 #define MSG_DONTWAIT 0
#define MSG_NOSIGNAL 0 #define MSG_NOSIGNAL 0
...@@ -69,7 +60,6 @@ ...@@ -69,7 +60,6 @@
#include <sys/socket.h> #include <sys/socket.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <netdb.h> #include <netdb.h>
#include <errno.h>
#endif #endif
#undef NDEBUG /* ensure assertions are built-in */ #undef NDEBUG /* ensure assertions are built-in */
...@@ -370,9 +360,8 @@ static void responses (void) ...@@ -370,9 +360,8 @@ static void responses (void)
== STUN_VALIDATION_SUCCESS); == STUN_VALIDATION_SUCCESS);
stun_agent_init_response (&agent, &msg, buf, sizeof (buf), &msg); stun_agent_init_response (&agent, &msg, buf, sizeof (buf), &msg);
val = stun_message_append_addr (&msg, STUN_ATTRIBUTE_MAPPED_ADDRESS, assert (stun_message_append_addr (&msg, STUN_ATTRIBUTE_MAPPED_ADDRESS,
(struct sockaddr *)&addr, addrlen); (struct sockaddr *)&addr, addrlen) == STUN_MESSAGE_RETURN_SUCCESS);
assert (val == 0);
len = stun_agent_finish_message (&agent, &msg, NULL, 0); len = stun_agent_finish_message (&agent, &msg, NULL, 0);
assert (len > 0); assert (len > 0);
......
...@@ -49,16 +49,6 @@ ...@@ -49,16 +49,6 @@
#ifdef _WIN32 #ifdef _WIN32
#include <winsock2.h> #include <winsock2.h>
#include <ws2tcpip.h> #include <ws2tcpip.h>
#define ENOENT -1
#define EINVAL -2
#define ENOBUFS -3
#define EAFNOSUPPORT -4
#define EPROTO -5
#define EACCES -6
#define EINPROGRESS -7
#define EAGAIN -8
#define ENOSYS -9
#define MSG_DONTWAIT 0 #define MSG_DONTWAIT 0
#define MSG_NOSIGNAL 0 #define MSG_NOSIGNAL 0
...@@ -69,7 +59,6 @@ ...@@ -69,7 +59,6 @@
#include <arpa/inet.h> #include <arpa/inet.h>
#include <netinet/in.h> #include <netinet/in.h>
#include <netdb.h> #include <netdb.h>
#include <errno.h>
#endif #endif
#undef NDEBUG /* ensure assertions are built-in */ #undef NDEBUG /* ensure assertions are built-in */
...@@ -82,7 +71,8 @@ int main (void) ...@@ -82,7 +71,8 @@ int main (void)
uint8_t req_buf[STUN_MAX_MESSAGE_SIZE]; uint8_t req_buf[STUN_MAX_MESSAGE_SIZE];
uint8_t resp_buf[STUN_MAX_MESSAGE_SIZE]; uint8_t resp_buf[STUN_MAX_MESSAGE_SIZE];
const uint64_t tie = 0x8000000000000000LL; const uint64_t tie = 0x8000000000000000LL;
ssize_t val; StunMessageReturn val;
StunUsageIceReturn val2;
size_t len; size_t len;
size_t rlen; size_t rlen;
static char username[] = "L:R", ufrag[] = "L", pass[] = "secret"; static char username[] = "L:R", ufrag[] = "L", pass[] = "secret";
...@@ -119,32 +109,32 @@ int main (void) ...@@ -119,32 +109,32 @@ int main (void)
assert (rlen > 0); assert (rlen > 0);
len = sizeof (resp_buf); len = sizeof (resp_buf);
val = stun_usage_ice_conncheck_create_reply (&agent, &req, val2 = stun_usage_ice_conncheck_create_reply (&agent, &req,
&resp, resp_buf, &len, (struct sockaddr *)&ip4, &resp, resp_buf, &len, (struct sockaddr *)&ip4,
sizeof (ip4), &control, tie, STUN_USAGE_ICE_COMPATIBILITY_DRAFT19); sizeof (ip4), &control, tie, STUN_USAGE_ICE_COMPATIBILITY_DRAFT19);
assert (val == EINVAL); assert (val2 == STUN_USAGE_ICE_RETURN_INVALID_REQUEST);
assert (len == 0); assert (len == 0);
/* Incorrect message method */ /* Incorrect message method */
assert (stun_agent_init_request (&agent, &req, req_buf, sizeof(req_buf), 0x666)); assert (stun_agent_init_request (&agent, &req, req_buf, sizeof(req_buf), 0x666));
val = stun_message_append_string (&req, STUN_ATTRIBUTE_USERNAME, username); val = stun_message_append_string (&req, STUN_ATTRIBUTE_USERNAME, username);
assert (val == 0); assert (val == STUN_MESSAGE_RETURN_SUCCESS);
rlen = stun_agent_finish_message (&agent, &req, pass, strlen (pass)); rlen = stun_agent_finish_message (&agent, &req, pass, strlen (pass));
assert (rlen > 0); assert (rlen > 0);
len = sizeof (resp_buf); len = sizeof (resp_buf);
val = stun_usage_ice_conncheck_create_reply (&agent, &req, val2 = stun_usage_ice_conncheck_create_reply (&agent, &req,
&resp, resp_buf, &len, (struct sockaddr *)&ip4, &resp, resp_buf, &len, (struct sockaddr *)&ip4,
sizeof (ip4), &control, tie, STUN_USAGE_ICE_COMPATIBILITY_DRAFT19); sizeof (ip4), &control, tie, STUN_USAGE_ICE_COMPATIBILITY_DRAFT19);
assert (val == EPROTO); assert (val2 == STUN_USAGE_ICE_RETURN_INVALID_METHOD);
assert (len > 0); assert (len > 0);
/* Unknown attribute */ /* Unknown attribute */
assert (stun_agent_init_request (&agent, &req, req_buf, sizeof(req_buf), STUN_BINDING)); assert (stun_agent_init_request (&agent, &req, req_buf, sizeof(req_buf), STUN_BINDING));
val = stun_message_append_string (&req, 0x666, "The evil unknown attribute!"); val = stun_message_append_string (&req, 0x666, "The evil unknown attribute!");
assert (val == 0); assert (val == STUN_MESSAGE_RETURN_SUCCESS);
val = stun_message_append_string (&req, STUN_ATTRIBUTE_USERNAME, username); val = stun_message_append_string (&req, STUN_ATTRIBUTE_USERNAME, username);
assert (val == 0); assert (val == STUN_MESSAGE_RETURN_SUCCESS);
rlen = stun_agent_finish_message (&agent, &req, pass, strlen (pass)); rlen = stun_agent_finish_message (&agent, &req, pass, strlen (pass));
assert (rlen > 0); assert (rlen > 0);
...@@ -178,19 +168,19 @@ int main (void) ...@@ -178,19 +168,19 @@ int main (void)
/* Good message */ /* Good message */
assert (stun_agent_init_request (&agent, &req, req_buf, sizeof(req_buf), STUN_BINDING)); assert (stun_agent_init_request (&agent, &req, req_buf, sizeof(req_buf), STUN_BINDING));
val = stun_message_append32 (&req, STUN_ATTRIBUTE_PRIORITY, 0x12345678); val = stun_message_append32 (&req, STUN_ATTRIBUTE_PRIORITY, 0x12345678);
assert (val == 0); assert (val == STUN_MESSAGE_RETURN_SUCCESS);
val = stun_message_append_flag (&req, STUN_ATTRIBUTE_USE_CANDIDATE); val = stun_message_append_flag (&req, STUN_ATTRIBUTE_USE_CANDIDATE);
assert (val == 0); assert (val == STUN_MESSAGE_RETURN_SUCCESS);
val = stun_message_append_string (&req, STUN_ATTRIBUTE_USERNAME, ufrag); val = stun_message_append_string (&req, STUN_ATTRIBUTE_USERNAME, ufrag);
assert (val == 0); assert (val == STUN_MESSAGE_RETURN_SUCCESS);
rlen = stun_agent_finish_message (&agent, &req, pass, strlen (pass)); rlen = stun_agent_finish_message (&agent, &req, pass, strlen (pass));
assert (rlen > 0); assert (rlen > 0);
len = sizeof (resp_buf); len = sizeof (resp_buf);
val = stun_usage_ice_conncheck_create_reply (&agent, &req, val2 = stun_usage_ice_conncheck_create_reply (&agent, &req,
&resp, resp_buf, &len, (struct sockaddr *)&ip4, &resp, resp_buf, &len, (struct sockaddr *)&ip4,
sizeof (ip4), &control, tie, STUN_USAGE_ICE_COMPATIBILITY_DRAFT19); sizeof (ip4), &control, tie, STUN_USAGE_ICE_COMPATIBILITY_DRAFT19);
assert (val == 0); assert (val == STUN_USAGE_ICE_RETURN_SUCCESS);
assert (len > 0); assert (len > 0);
assert (stun_agent_validate (&agent, &resp, resp_buf, len, assert (stun_agent_validate (&agent, &resp, resp_buf, len,
stun_agent_default_validater, validater_data) == STUN_VALIDATION_SUCCESS); stun_agent_default_validater, validater_data) == STUN_VALIDATION_SUCCESS);
...@@ -201,16 +191,16 @@ int main (void) ...@@ -201,16 +191,16 @@ int main (void)
/* Invalid socket address */ /* Invalid socket address */
assert (stun_agent_init_request (&agent, &req, req_buf, sizeof(req_buf), STUN_BINDING)); assert (stun_agent_init_request (&agent, &req, req_buf, sizeof(req_buf), STUN_BINDING));
val = stun_message_append_string (&req, STUN_ATTRIBUTE_USERNAME, ufrag); val = stun_message_append_string (&req, STUN_ATTRIBUTE_USERNAME, ufrag);
assert (val == 0); assert (val == STUN_MESSAGE_RETURN_SUCCESS);
rlen = stun_agent_finish_message (&agent, &req, pass, strlen (pass)); rlen = stun_agent_finish_message (&agent, &req, pass, strlen (pass));
assert (rlen > 0); assert (rlen > 0);
ip4.sin_family = AF_UNSPEC; ip4.sin_family = AF_UNSPEC;
len = sizeof (resp_buf); len = sizeof (resp_buf);
val = stun_usage_ice_conncheck_create_reply (&agent, &req, val2 = stun_usage_ice_conncheck_create_reply (&agent, &req,
&resp, resp_buf, &len, (struct sockaddr *)&ip4, &resp, resp_buf, &len, (struct sockaddr *)&ip4,
sizeof (ip4), &control, tie, STUN_USAGE_ICE_COMPATIBILITY_DRAFT19); sizeof (ip4), &control, tie, STUN_USAGE_ICE_COMPATIBILITY_DRAFT19);
assert (val == EAFNOSUPPORT); assert (val2 == STUN_USAGE_ICE_RETURN_INVALID_ADDRESS);
assert (len == 0); assert (len == 0);
ip4.sin_family = AF_INET; ip4.sin_family = AF_INET;
...@@ -218,19 +208,19 @@ int main (void) ...@@ -218,19 +208,19 @@ int main (void)
/* Lost role conflict */ /* Lost role conflict */
assert (stun_agent_init_request (&agent, &req, req_buf, sizeof(req_buf), STUN_BINDING)); assert (stun_agent_init_request (&agent, &req, req_buf, sizeof(req_buf), STUN_BINDING));
val = stun_message_append64 (&req, STUN_ATTRIBUTE_ICE_CONTROLLING, tie + 1); val = stun_message_append64 (&req, STUN_ATTRIBUTE_ICE_CONTROLLING, tie + 1);
assert (val == 0); assert (val == STUN_MESSAGE_RETURN_SUCCESS);
val = stun_message_append_string (&req, STUN_ATTRIBUTE_USERNAME, ufrag); val = stun_message_append_string (&req, STUN_ATTRIBUTE_USERNAME, ufrag);
assert (val == 0); assert (val == STUN_MESSAGE_RETURN_SUCCESS);
rlen = stun_agent_finish_message (&agent, &req, pass, strlen (pass)); rlen = stun_agent_finish_message (&agent, &req, pass, strlen (pass));
assert (rlen > 0); assert (rlen > 0);
len = sizeof (resp_buf); len = sizeof (resp_buf);
control = true; control = true;
val = stun_usage_ice_conncheck_create_reply (&agent, &req, val2 = stun_usage_ice_conncheck_create_reply (&agent, &req,
&resp, resp_buf, &len, (struct sockaddr *)&ip4, &resp, resp_buf, &len, (struct sockaddr *)&ip4,
sizeof (ip4), &control, tie, STUN_USAGE_ICE_COMPATIBILITY_DRAFT19); sizeof (ip4), &control, tie, STUN_USAGE_ICE_COMPATIBILITY_DRAFT19);
assert (val == EACCES); assert (val2 == STUN_USAGE_ICE_RETURN_ROLE_CONFLICT);
assert (len > 0); assert (len > 0);
assert (control == false); assert (control == false);
assert (stun_agent_validate (&agent, &resp, resp_buf, len, assert (stun_agent_validate (&agent, &resp, resp_buf, len,
...@@ -240,18 +230,18 @@ int main (void) ...@@ -240,18 +230,18 @@ int main (void)
/* Won role conflict */ /* Won role conflict */
assert (stun_agent_init_request (&agent, &req, req_buf, sizeof(req_buf), STUN_BINDING)); assert (stun_agent_init_request (&agent, &req, req_buf, sizeof(req_buf), STUN_BINDING));
val = stun_message_append64 (&req, STUN_ATTRIBUTE_ICE_CONTROLLED, tie - 1); val = stun_message_append64 (&req, STUN_ATTRIBUTE_ICE_CONTROLLED, tie - 1);
assert (val == 0); assert (val == STUN_MESSAGE_RETURN_SUCCESS);
val = stun_message_append_string (&req, STUN_ATTRIBUTE_USERNAME, ufrag); val = stun_message_append_string (&req, STUN_ATTRIBUTE_USERNAME, ufrag);
assert (val == 0); assert (val == STUN_MESSAGE_RETURN_SUCCESS);
rlen = stun_agent_finish_message (&agent, &req, pass, strlen (pass)); rlen = stun_agent_finish_message (&agent, &req, pass, strlen (pass));
assert (rlen > 0); assert (rlen > 0);
len = sizeof (resp_buf); len = sizeof (resp_buf);
control = false; control = false;
val = stun_usage_ice_conncheck_create_reply (&agent, &req, val2 = stun_usage_ice_conncheck_create_reply (&agent, &req,
&resp, resp_buf, &len, (struct sockaddr *)&ip4, &resp, resp_buf, &len, (struct sockaddr *)&ip4,
sizeof (ip4), &control, tie, STUN_USAGE_ICE_COMPATIBILITY_DRAFT19); sizeof (ip4), &control, tie, STUN_USAGE_ICE_COMPATIBILITY_DRAFT19);
assert (val == 0); assert (val2 == STUN_USAGE_ICE_RETURN_SUCCESS);
assert (len > 0); assert (len > 0);
assert (control == false); assert (control == false);
assert (stun_agent_validate (&agent, &resp, resp_buf, len, assert (stun_agent_validate (&agent, &resp, resp_buf, len,
......
...@@ -48,20 +48,10 @@ ...@@ -48,20 +48,10 @@
#ifdef _WIN32 #ifdef _WIN32
#include <winsock2.h> #include <winsock2.h>
#define ENOENT -1
#define EINVAL -2
#define ENOBUFS -3
#define EAFNOSUPPORT -4
#define EPROTO -5
#define EACCES -6
#define EINPROGRESS -7
#define EAGAIN -8
#define ENOSYS -9
#else #else
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <errno.h>
#endif #endif
...@@ -155,27 +145,29 @@ check_af (const char *name, int family, socklen_t addrlen) ...@@ -155,27 +145,29 @@ check_af (const char *name, int family, socklen_t addrlen)
stun_agent_init_request (&agent, &msg, buf, sizeof(buf), STUN_BINDING); stun_agent_init_request (&agent, &msg, buf, sizeof(buf), STUN_BINDING);
if (stun_message_append_addr (&msg, STUN_ATTRIBUTE_MAPPED_ADDRESS, if (stun_message_append_addr (&msg, STUN_ATTRIBUTE_MAPPED_ADDRESS,
(struct sockaddr *)&addr, addrlen) != EAFNOSUPPORT) (struct sockaddr *)&addr, addrlen) !=
STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS)
fatal ("Unknown address family test failed"); fatal ("Unknown address family test failed");
if (stun_message_append_xor_addr (&msg, STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS, if (stun_message_append_xor_addr (&msg, STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS,
(struct sockaddr *)&addr, addrlen) != EAFNOSUPPORT) (struct sockaddr *)&addr, addrlen) !=
STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS)
fatal ("Unknown address family xor test failed"); fatal ("Unknown address family xor test failed");
addr.ss_family = family; addr.ss_family = family;
if (stun_message_append_addr (&msg, STUN_ATTRIBUTE_MAPPED_ADDRESS, if (stun_message_append_addr (&msg, STUN_ATTRIBUTE_MAPPED_ADDRESS,
(struct sockaddr *)&addr, addrlen - 1) != EINVAL) (struct sockaddr *)&addr, addrlen - 1) != STUN_MESSAGE_RETURN_INVALID)
fatal ("Too small %s sockaddr test failed", name); fatal ("Too small %s sockaddr test failed", name);
if (stun_message_append_xor_addr (&msg, STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS, if (stun_message_append_xor_addr (&msg, STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS,
(struct sockaddr *)&addr, addrlen - 1) != EINVAL) (struct sockaddr *)&addr, addrlen - 1) != STUN_MESSAGE_RETURN_INVALID)
fatal ("Too small %s sockaddr xor test failed", name); fatal ("Too small %s sockaddr xor test failed", name);
if (stun_message_append_addr (&msg, STUN_ATTRIBUTE_MAPPED_ADDRESS, if (stun_message_append_addr (&msg, STUN_ATTRIBUTE_MAPPED_ADDRESS,
(struct sockaddr *)&addr, addrlen)) (struct sockaddr *)&addr, addrlen) != STUN_MESSAGE_RETURN_SUCCESS)
fatal ("%s sockaddr test failed", name); fatal ("%s sockaddr test failed", name);
if (stun_message_append_xor_addr (&msg, STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS, if (stun_message_append_xor_addr (&msg, STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS,
(struct sockaddr *)&addr, addrlen)) (struct sockaddr *)&addr, addrlen) != STUN_MESSAGE_RETURN_SUCCESS)
fatal ("%s sockaddr xor test failed", name); fatal ("%s sockaddr xor test failed", name);
} }
...@@ -187,7 +179,10 @@ int main (void) ...@@ -187,7 +179,10 @@ int main (void)
StunAgent agent; StunAgent agent;
StunMessage msg; StunMessage msg;
uint16_t known_attributes[] = {STUN_ATTRIBUTE_USERNAME, STUN_ATTRIBUTE_MESSAGE_INTEGRITY, STUN_ATTRIBUTE_ERROR_CODE, 0}; uint16_t known_attributes[] = {STUN_ATTRIBUTE_USERNAME,
STUN_ATTRIBUTE_MESSAGE_INTEGRITY,
STUN_ATTRIBUTE_ERROR_CODE,
0};
stun_agent_init (&agent, known_attributes, stun_agent_init (&agent, known_attributes,
STUN_COMPATIBILITY_RFC5389, STUN_AGENT_USAGE_USE_FINGERPRINT); STUN_COMPATIBILITY_RFC5389, STUN_AGENT_USAGE_USE_FINGERPRINT);
...@@ -225,19 +220,22 @@ int main (void) ...@@ -225,19 +220,22 @@ int main (void)
stun_agent_init_request (&agent, &msg, buf, sizeof(buf), STUN_BINDING); stun_agent_init_request (&agent, &msg, buf, sizeof(buf), STUN_BINDING);
for (len = 0; for (len = 0;
stun_message_append_flag (&msg, 0xffff) != ENOBUFS; stun_message_append_flag (&msg, 0xffff) !=
STUN_MESSAGE_RETURN_NOT_ENOUGH_SPACE;
len += 4) len += 4)
{ {
if (len > 0xffff) if (len > 0xffff)
fatal ("Overflow protection test failed"); fatal ("Overflow protection test failed");
} }
if (stun_message_append32 (&msg, 0xffff, 0x12345678) != ENOBUFS) if (stun_message_append32 (&msg, 0xffff, 0x12345678) !=
STUN_MESSAGE_RETURN_NOT_ENOUGH_SPACE)
fatal ("Double-word overflow test failed"); fatal ("Double-word overflow test failed");
if (stun_message_append64 (&msg, 0xffff, if (stun_message_append64 (&msg, 0xffff,
0x123456789abcdef0) != ENOBUFS) 0x123456789abcdef0) != STUN_MESSAGE_RETURN_NOT_ENOUGH_SPACE)
fatal ("Quad-word overflow test failed"); fatal ("Quad-word overflow test failed");
if (stun_message_append_string (&msg, 0xffff, "foobar") != ENOBUFS) if (stun_message_append_string (&msg, 0xffff, "foobar") !=
STUN_MESSAGE_RETURN_NOT_ENOUGH_SPACE)
fatal ("String overflow test failed"); fatal ("String overflow test failed");
memset (&addr, 0, sizeof (addr)); memset (&addr, 0, sizeof (addr));
...@@ -246,7 +244,7 @@ int main (void) ...@@ -246,7 +244,7 @@ int main (void)
addr.sa_len = sizeof (addr); addr.sa_len = sizeof (addr);
#endif #endif
if (stun_message_append_xor_addr (&msg, 0xffff, &addr, if (stun_message_append_xor_addr (&msg, 0xffff, &addr,
sizeof (addr)) != ENOBUFS) sizeof (addr)) != STUN_MESSAGE_RETURN_NOT_ENOUGH_SPACE)
fatal ("Address overflow test failed"); fatal ("Address overflow test failed");
len = sizeof (msg); len = sizeof (msg);
if (stun_agent_finish_message (&agent, &msg, NULL, 0) != 0) if (stun_agent_finish_message (&agent, &msg, NULL, 0) != 0)
......
...@@ -45,20 +45,10 @@ ...@@ -45,20 +45,10 @@
#ifdef _WIN32 #ifdef _WIN32
#include <winsock2.h> #include <winsock2.h>
#define ENOENT -1
#define EINVAL -2
#define ENOBUFS -3
#define EAFNOSUPPORT -4
#define EPROTO -5
#define EACCES -6
#define EINPROGRESS -7
#define EAGAIN -8
#define ENOSYS -9
#else #else
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <errno.h>
#endif #endif
...@@ -251,7 +241,8 @@ static void test_message (void) ...@@ -251,7 +241,8 @@ static void test_message (void)
fatal ("Binding Error Response failed"); fatal ("Binding Error Response failed");
if (stun_message_validate_buffer_length (NULL, 0) != STUN_MESSAGE_BUFFER_INVALID) if (stun_message_validate_buffer_length (NULL, 0) !=
STUN_MESSAGE_BUFFER_INVALID)
fatal ("0 bytes test failed"); fatal ("0 bytes test failed");
if (stun_message_validate_buffer_length ((uint8_t *)"\xf0", 1) >= 0) if (stun_message_validate_buffer_length ((uint8_t *)"\xf0", 1) >= 0)
fatal ("1 byte test failed"); fatal ("1 byte test failed");
...@@ -396,51 +387,61 @@ static void test_attribute (void) ...@@ -396,51 +387,61 @@ static void test_attribute (void)
if (!stun_message_has_attribute (&msg, 0xff01)) if (!stun_message_has_attribute (&msg, 0xff01))
fatal ("Present attribute test failed"); fatal ("Present attribute test failed");
if (stun_message_find_flag (&msg, 0xff00) != ENOENT) if (stun_message_find_flag (&msg, 0xff00) != STUN_MESSAGE_RETURN_NOT_FOUND)
fatal ("Absent flag test failed"); fatal ("Absent flag test failed");
if (stun_message_find_flag (&msg, 0xff01) != 0) if (stun_message_find_flag (&msg, 0xff01) != STUN_MESSAGE_RETURN_SUCCESS)
fatal ("Flag test failed"); fatal ("Flag test failed");
if (stun_message_find_flag (&msg, 0xff02) != EINVAL) if (stun_message_find_flag (&msg, 0xff02) != STUN_MESSAGE_RETURN_INVALID)
fatal ("Too big flag test failed"); fatal ("Too big flag test failed");
if (stun_message_find32 (&msg, 0xff00, &dword) != ENOENT) if (stun_message_find32 (&msg, 0xff00, &dword) !=
STUN_MESSAGE_RETURN_NOT_FOUND)
fatal ("Absent dword test failed"); fatal ("Absent dword test failed");
if (stun_message_find32 (&msg, 0xff01, &dword) != EINVAL) if (stun_message_find32 (&msg, 0xff01, &dword) != STUN_MESSAGE_RETURN_INVALID)
fatal ("Bad dword test failed"); fatal ("Bad dword test failed");
if (stun_message_find32 (&msg, 0xff02, &dword) != 0) if (stun_message_find32 (&msg, 0xff02, &dword) != STUN_MESSAGE_RETURN_SUCCESS)
fatal ("Double-word test failed"); fatal ("Double-word test failed");
if (stun_message_find64 (&msg, 0xff00, &qword) != ENOENT) if (stun_message_find64 (&msg, 0xff00, &qword) !=
STUN_MESSAGE_RETURN_NOT_FOUND)
fatal ("Absent qword test failed"); fatal ("Absent qword test failed");
if (stun_message_find64 (&msg, 0xff01, &qword) != EINVAL) if (stun_message_find64 (&msg, 0xff01, &qword) != STUN_MESSAGE_RETURN_INVALID)
fatal ("Bad qword test failed"); fatal ("Bad qword test failed");
if (stun_message_find64 (&msg, 0xff04, &qword) !=0) if (stun_message_find64 (&msg, 0xff04, &qword) != STUN_MESSAGE_RETURN_SUCCESS)
fatal ("Quad-word test failed"); fatal ("Quad-word test failed");
if (stun_message_find_string (&msg, 0xff00, str, STUN_MAX_CP) != ENOENT) if (stun_message_find_string (&msg, 0xff00, str, STUN_MAX_CP) !=
STUN_MESSAGE_RETURN_NOT_FOUND)
fatal ("Absent string test failed"); fatal ("Absent string test failed");
if ((stun_message_find_string (&msg, 0xff02, str, STUN_MAX_CP) != 0) if ((stun_message_find_string (&msg, 0xff02, str, STUN_MAX_CP) !=
STUN_MESSAGE_RETURN_SUCCESS)
|| strcmp (str, "ABCD")) || strcmp (str, "ABCD"))
fatal ("String test failed"); fatal ("String test failed");
addrlen = sizeof (addr); addrlen = sizeof (addr);
if (stun_message_find_addr (&msg, 0xff01, &addr.sa, &addrlen) != EINVAL) if (stun_message_find_addr (&msg, 0xff01, &addr.sa, &addrlen) !=
STUN_MESSAGE_RETURN_INVALID)
fatal ("Too short addres test failed"); fatal ("Too short addres test failed");
addrlen = sizeof (addr); addrlen = sizeof (addr);
if (stun_message_find_addr (&msg, 0xff02, &addr.sa, &addrlen) != EAFNOSUPPORT) if (stun_message_find_addr (&msg, 0xff02, &addr.sa, &addrlen) !=
STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS)
fatal ("Unknown address family test failed"); fatal ("Unknown address family test failed");
addrlen = sizeof (addr); addrlen = sizeof (addr);
if (stun_message_find_addr (&msg, 0xff03, &addr.sa, &addrlen) != EINVAL) if (stun_message_find_addr (&msg, 0xff03, &addr.sa, &addrlen) !=
STUN_MESSAGE_RETURN_INVALID)
fatal ("Too short IPv6 address test failed"); fatal ("Too short IPv6 address test failed");
addrlen = sizeof (addr); addrlen = sizeof (addr);
if (stun_message_find_addr (&msg, 0xff04, &addr.sa, &addrlen) != 0) if (stun_message_find_addr (&msg, 0xff04, &addr.sa, &addrlen) !=
STUN_MESSAGE_RETURN_SUCCESS)
fatal ("IPv4 address test failed"); fatal ("IPv4 address test failed");
addrlen = sizeof (addr); addrlen = sizeof (addr);
if (stun_message_find_addr (&msg, 0xff05, &addr.sa, &addrlen) != EINVAL) if (stun_message_find_addr (&msg, 0xff05, &addr.sa, &addrlen) !=
STUN_MESSAGE_RETURN_INVALID)
fatal ("Too big IPv4 address test failed"); fatal ("Too big IPv4 address test failed");
addrlen = sizeof (addr); addrlen = sizeof (addr);
if (stun_message_find_xor_addr (&msg, 0xff06, &addr.sa, &addrlen) if (stun_message_find_xor_addr (&msg, 0xff06, &addr.sa, &addrlen) !=
|| memcmp (&addr.s6.sin6_addr, "\x20\x01\x0d\xb8""\xde\xad\xbe\xef" STUN_MESSAGE_RETURN_SUCCESS ||
memcmp (&addr.s6.sin6_addr, "\x20\x01\x0d\xb8""\xde\xad\xbe\xef"
"\xde\xfa\xce\xd0""\xfa\xce\xde\xed", 16)) "\xde\xfa\xce\xd0""\xfa\xce\xde\xed", 16))
fatal ("IPv6 address test failed"); fatal ("IPv6 address test failed");
...@@ -647,7 +648,7 @@ static void test_vectors (void) ...@@ -647,7 +648,7 @@ static void test_vectors (void)
addrlen = sizeof (ip4); addrlen = sizeof (ip4);
if (stun_message_find_xor_addr (&msg, STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS, if (stun_message_find_xor_addr (&msg, STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS,
(struct sockaddr *)&ip4, &addrlen) != 0) (struct sockaddr *)&ip4, &addrlen) != STUN_MESSAGE_RETURN_SUCCESS)
fatal ("Response test vector IPv4 extraction failed"); fatal ("Response test vector IPv4 extraction failed");
if (ip4.sin_family != AF_INET) if (ip4.sin_family != AF_INET)
fatal ("Response test vector IPv4 family failed"); fatal ("Response test vector IPv4 family failed");
...@@ -680,7 +681,7 @@ static void test_vectors (void) ...@@ -680,7 +681,7 @@ static void test_vectors (void)
addrlen = sizeof (ip6); addrlen = sizeof (ip6);
if (stun_message_find_xor_addr (&msg, STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS, if (stun_message_find_xor_addr (&msg, STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS,
(struct sockaddr *)&ip6, &addrlen) != 0) (struct sockaddr *)&ip6, &addrlen) != STUN_MESSAGE_RETURN_SUCCESS)
fatal ("Response test vector IPv6 extraction failed"); fatal ("Response test vector IPv6 extraction failed");
if (ip6.sin6_family != AF_INET6) if (ip6.sin6_family != AF_INET6)
fatal ("Response test vector IPv6 family failed"); fatal ("Response test vector IPv6 family failed");
......
...@@ -49,15 +49,6 @@ ...@@ -49,15 +49,6 @@
#ifdef _WIN32 #ifdef _WIN32
#include <winsock2.h> #include <winsock2.h>
#include <ws2tcpip.h> #include <ws2tcpip.h>
#define ENOENT -1
#define EINVAL -2
#define ENOBUFS -3
#define EAFNOSUPPORT -4
#define EPROTO -5
#define EACCES -6
#define EINPROGRESS -7
#define EAGAIN -8
#define ENOSYS -9
#define MSG_DONTWAIT 0 #define MSG_DONTWAIT 0
#define MSG_NOSIGNAL 0 #define MSG_NOSIGNAL 0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment