1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
[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 <jacmet@sunsite.dk>
---
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 <net/if_dl.h>
#endif
+#include <features.h>
+#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;
}
|