diff options
author | irungentoo <irungentoo@gmail.com> | 2013-09-15 10:17:09 -0400 |
---|---|---|
committer | irungentoo <irungentoo@gmail.com> | 2013-09-15 10:17:09 -0400 |
commit | decdb7aa8c827787240bac66526a81bf2b8f7ebb (patch) | |
tree | c8804a54cd21f126aa2d40792910ffb8a4d50f05 | |
parent | bbeb6e15cdd4135f1922146741d8c9d709f808eb (diff) |
more portability fixes.
-rw-r--r-- | toxcore/network.c | 17 | ||||
-rw-r--r-- | toxcore/network.h | 6 |
2 files changed, 16 insertions, 7 deletions
diff --git a/toxcore/network.c b/toxcore/network.c index 1abe4784..fe2ef238 100644 --- a/toxcore/network.c +++ b/toxcore/network.c | |||
@@ -95,10 +95,13 @@ int sendpacket(Networking_Core *net, IP_Port ip_port, uint8_t *data, uint32_t le | |||
95 | 95 | ||
96 | /* there should be a macro for this in a standards compliant | 96 | /* there should be a macro for this in a standards compliant |
97 | * environment, not found */ | 97 | * environment, not found */ |
98 | addr6->sin6_addr.s6_addr32[0] = 0; | 98 | IP6 ip6; |
99 | addr6->sin6_addr.s6_addr32[1] = 0; | 99 | |
100 | addr6->sin6_addr.s6_addr32[2] = htonl(0xFFFF); | 100 | ip6.uint32[0] = 0; |
101 | addr6->sin6_addr.s6_addr32[3] = ip_port.ip.ip4.uint32; | 101 | ip6.uint32[1] = 0; |
102 | ip6.uint32[2] = htonl(0xFFFF); | ||
103 | ip6.uint32[3] = ip_port.ip.ip4.uint32; | ||
104 | addr6->sin6_addr = ip6.in6_addr; | ||
102 | 105 | ||
103 | addr6->sin6_flowinfo = 0; | 106 | addr6->sin6_flowinfo = 0; |
104 | addr6->sin6_scope_id = 0; | 107 | addr6->sin6_scope_id = 0; |
@@ -508,17 +511,17 @@ int ip_equal(IP *a, IP *b) | |||
508 | if (a->family == AF_INET) | 511 | if (a->family == AF_INET) |
509 | return (a->ip4.in_addr.s_addr == b->ip4.in_addr.s_addr); | 512 | return (a->ip4.in_addr.s_addr == b->ip4.in_addr.s_addr); |
510 | else if (a->family == AF_INET6) | 513 | else if (a->family == AF_INET6) |
511 | return IN6_ARE_ADDR_EQUAL(&a->ip6, &b->ip6); | 514 | return IN6_ARE_ADDR_EQUAL(&a->ip6.in6_addr, &b->ip6.in6_addr); |
512 | else | 515 | else |
513 | return 0; | 516 | return 0; |
514 | } | 517 | } |
515 | 518 | ||
516 | /* different family: check on the IPv6 one if it is the IPv4 one embedded */ | 519 | /* different family: check on the IPv6 one if it is the IPv4 one embedded */ |
517 | if ((a->family == AF_INET) && (b->family == AF_INET6)) { | 520 | if ((a->family == AF_INET) && (b->family == AF_INET6)) { |
518 | if (IN6_IS_ADDR_V4COMPAT(&b->ip6)) | 521 | if (IN6_IS_ADDR_V4COMPAT(&b->ip6.in6_addr)) |
519 | return (a->ip4.in_addr.s_addr == b->ip6.uint32[3]); | 522 | return (a->ip4.in_addr.s_addr == b->ip6.uint32[3]); |
520 | } else if ((a->family == AF_INET6) && (b->family == AF_INET)) { | 523 | } else if ((a->family == AF_INET6) && (b->family == AF_INET)) { |
521 | if (IN6_IS_ADDR_V4COMPAT(&a->ip6)) | 524 | if (IN6_IS_ADDR_V4COMPAT(&a->ip6.in6_addr)) |
522 | return (a->ip6.uint32[3] == b->ip4.in_addr.s_addr); | 525 | return (a->ip6.uint32[3] == b->ip4.in_addr.s_addr); |
523 | } | 526 | } |
524 | 527 | ||
diff --git a/toxcore/network.h b/toxcore/network.h index 416d794d..4432baed 100644 --- a/toxcore/network.h +++ b/toxcore/network.h | |||
@@ -66,6 +66,12 @@ typedef int sock_t; | |||
66 | #define crypto_box_MACBYTES (crypto_box_ZEROBYTES - crypto_box_BOXZEROBYTES) | 66 | #define crypto_box_MACBYTES (crypto_box_ZEROBYTES - crypto_box_BOXZEROBYTES) |
67 | #endif | 67 | #endif |
68 | 68 | ||
69 | #ifndef IPV6_ADD_MEMBERSHIP | ||
70 | #ifdef IPV6_JOIN_GROUP | ||
71 | #define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP | ||
72 | #define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP | ||
73 | #endif | ||
74 | #endif | ||
69 | 75 | ||
70 | #define MAX_UDP_PACKET_SIZE 65507 | 76 | #define MAX_UDP_PACKET_SIZE 65507 |
71 | 77 | ||