43 #if defined(ADDRESS_SORTING_POSIX)
50 #include <sys/types.h>
58 bool source_addr_exists =
false;
60 int s =
socket(((
struct sockaddr*)dest_addr)->sa_family, SOCK_DGRAM, 0);
62 if (connect(s, (
const struct sockaddr*)&dest_addr->addr,
63 (socklen_t)dest_addr->len) != -1) {
65 memset(&found_source_addr, 0,
sizeof(found_source_addr));
66 found_source_addr.
len =
sizeof(found_source_addr.
addr);
67 if (getsockname(s, (
struct sockaddr*)&found_source_addr.
addr,
68 (socklen_t*)&found_source_addr.
len) != -1) {
69 source_addr_exists =
true;
70 *source_addr = found_source_addr;
75 return source_addr_exists;
98 #endif // defined(ADDRESS_SORTING_POSIX)