summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorirungentoo <irungentoo@gmail.com>2013-09-15 10:17:09 -0400
committerirungentoo <irungentoo@gmail.com>2013-09-15 10:17:09 -0400
commitdecdb7aa8c827787240bac66526a81bf2b8f7ebb (patch)
treec8804a54cd21f126aa2d40792910ffb8a4d50f05
parentbbeb6e15cdd4135f1922146741d8c9d709f808eb (diff)
more portability fixes.
-rw-r--r--toxcore/network.c17
-rw-r--r--toxcore/network.h6
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