[PATCH] avahi-core: make ipv6 support optional on uclibc 0.9.31+ uClibc 0.9.31+ doesn't define the IPV6_* defines when IPv6 support isn't enabled, causing the avahi build to break. Detect this configuration, and comment out IPv6 code if so. Signed-off-by: Peter Korsgaard --- avahi-core/socket.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) Index: avahi-0.6.23/avahi-core/socket.c =================================================================== --- avahi-0.6.23.orig/avahi-core/socket.c +++ avahi-0.6.23/avahi-core/socket.c @@ -47,6 +47,11 @@ #include #endif +#include +#if defined(__UCLIBC__) && !defined (__UCLIBC_HAS_IPV6__) +#define NO_IPV6 +#endif + #include "dns.h" #include "fdutil.h" #include "socket.h" @@ -75,6 +80,7 @@ static void mdns_mcast_group_ipv4(struct inet_pton(AF_INET, AVAHI_IPV4_MCAST_GROUP, &ret_sa->sin_addr); } +#ifndef NO_IPV6 static void mdns_mcast_group_ipv6(struct sockaddr_in6 *ret_sa) { assert(ret_sa); @@ -83,6 +89,7 @@ static void mdns_mcast_group_ipv6(struct ret_sa->sin6_port = htons(AVAHI_MDNS_PORT); inet_pton(AF_INET6, AVAHI_IPV6_MCAST_GROUP, &ret_sa->sin6_addr); } +#endif static void ipv4_address_to_sockaddr(struct sockaddr_in *ret_sa, const AvahiIPv4Address *a, uint16_t port) { assert(ret_sa); @@ -95,6 +102,7 @@ static void ipv4_address_to_sockaddr(str memcpy(&ret_sa->sin_addr, a, sizeof(AvahiIPv4Address)); } +#ifndef NO_IPV6 static void ipv6_address_to_sockaddr(struct sockaddr_in6 *ret_sa, const AvahiIPv6Address *a, uint16_t port) { assert(ret_sa); assert(a); @@ -105,6 +113,7 @@ static void ipv6_address_to_sockaddr(str ret_sa->sin6_port = htons(port); memcpy(&ret_sa->sin6_addr, a, sizeof(AvahiIPv6Address)); } +#endif int avahi_mdns_mcast_join_ipv4(int fd, const AvahiIPv4Address *a, int idx, int join) { #ifdef HAVE_STRUCT_IP_MREQN @@ -143,6 +152,7 @@ int avahi_mdns_mcast_join_ipv4(int fd, c } int avahi_mdns_mcast_join_ipv6(int fd, const AvahiIPv6Address *a, int idx, int join) { +#ifndef NO_IPV6 struct ipv6_mreq mreq6; struct sockaddr_in6 sa6; @@ -164,6 +174,9 @@ int avahi_mdns_mcast_join_ipv6(int fd, c } return 0; +#else + return -1; +#endif } static int reuseaddr(int fd) { @@ -372,6 +385,7 @@ fail: } int avahi_open_socket_ipv6(int no_reuse) { +#ifndef NO_IPV6 struct sockaddr_in6 sa, local; int fd = -1, yes, r; int ttl; @@ -437,7 +451,7 @@ int avahi_open_socket_ipv6(int no_reuse) fail: if (fd >= 0) close(fd); - +#endif return -1; } @@ -567,7 +581,7 @@ int avahi_send_dns_packet_ipv6( const AvahiIPv6Address *src_address, const AvahiIPv6Address *dst_address, uint16_t dst_port) { - +#ifndef NO_IPV6 struct sockaddr_in6 sa; struct msghdr msg; struct iovec io; @@ -620,6 +634,9 @@ int avahi_send_dns_packet_ipv6( } return sendmsg_loop(fd, &msg, 0); +#else + return -1; +#endif } AvahiDnsPacket *avahi_recv_dns_packet_ipv4( @@ -782,7 +799,7 @@ AvahiDnsPacket *avahi_recv_dns_packet_ip AvahiIPv6Address *ret_dst_address, AvahiIfIndex *ret_iface, uint8_t *ret_ttl) { - +#ifndef NO_IPV6 AvahiDnsPacket *p = NULL; struct msghdr msg; struct iovec io; @@ -889,7 +906,7 @@ AvahiDnsPacket *avahi_recv_dns_packet_ip fail: if (p) avahi_dns_packet_free(p); - +#endif return NULL; } @@ -934,6 +951,7 @@ fail: } int avahi_open_unicast_socket_ipv6(void) { +#ifndef NO_IPV6 struct sockaddr_in6 local; int fd = -1, yes; @@ -974,6 +992,6 @@ int avahi_open_unicast_socket_ipv6(void) fail: if (fd >= 0) close(fd); - +#endif return -1; }