summaryrefslogtreecommitdiff
path: root/package/luasocket/luasocket-01-uClibc-IPv6.patch
blob: ae70b4dbc103b46319bd81a8b1ee69ae3453d5e4 (plain)
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
fix build with uClibc without IPv6 support

see Pull Request: https://github.com/diegonehab/luasocket/pull/90

Signed-off-by: Francois Perrad <francois.perrad@gadz.org>

Index: b/luasocket-3.0-rc1/src/options.c
===================================================================
--- a/luasocket-3.0-rc1/src/options.c
+++ b/luasocket-3.0-rc1/src/options.c
@@ -110,6 +110,7 @@
     return opt_setboolean(L, ps, SOL_SOCKET, SO_BROADCAST);
 }
 
+#ifdef IPV6_UNICAST_HOPS
 int opt_set_ip6_unicast_hops(lua_State *L, p_socket ps)
 {
   return opt_setint(L, ps, IPPROTO_IPV6, IPV6_UNICAST_HOPS);
@@ -119,7 +120,9 @@
 {
   return opt_getint(L, ps, IPPROTO_IPV6, IPV6_UNICAST_HOPS);
 }
+#endif
 
+#ifdef IPV6_MULTICAST_HOPS
 int opt_set_ip6_multicast_hops(lua_State *L, p_socket ps)
 {
   return opt_setint(L, ps, IPPROTO_IPV6, IPV6_MULTICAST_HOPS);
@@ -129,6 +132,7 @@
 {
   return opt_getint(L, ps, IPPROTO_IPV6, IPV6_MULTICAST_HOPS);
 }
+#endif
 
 int opt_set_ip_multicast_loop(lua_State *L, p_socket ps)
 {
@@ -140,6 +144,7 @@
     return opt_getboolean(L, ps, IPPROTO_IP, IP_MULTICAST_LOOP);
 }
 
+#ifdef IPV6_MULTICAST_LOOP
 int opt_set_ip6_multicast_loop(lua_State *L, p_socket ps)
 {
     return opt_setboolean(L, ps, IPPROTO_IPV6, IPV6_MULTICAST_LOOP);
@@ -149,6 +154,7 @@
 {
     return opt_getboolean(L, ps, IPPROTO_IPV6, IPV6_MULTICAST_LOOP);
 }
+#endif
 
 int opt_set_linger(lua_State *L, p_socket ps)
 {
@@ -221,16 +227,21 @@
     return opt_setmembership(L, ps, IPPROTO_IP, IP_DROP_MEMBERSHIP);
 }
 
+#ifdef IPV6_ADD_MEMBERSHIP
 int opt_set_ip6_add_membership(lua_State *L, p_socket ps)
 {
     return opt_ip6_setmembership(L, ps, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP);
 }
+#endif
 
+#ifdef IPV6_DROP_MEMBERSHIP
 int opt_set_ip6_drop_membersip(lua_State *L, p_socket ps)
 {
     return opt_ip6_setmembership(L, ps, IPPROTO_IPV6, IPV6_DROP_MEMBERSHIP);
 }
+#endif
 
+#ifdef IPV6_V6ONLY
 int opt_get_ip6_v6only(lua_State *L, p_socket ps)
 {
     return opt_getboolean(L, ps, IPPROTO_IPV6, IPV6_V6ONLY);
@@ -240,6 +251,7 @@
 {
     return opt_setboolean(L, ps, IPPROTO_IPV6, IPV6_V6ONLY);
 }
+#endif
 
 /*=========================================================================*\
 * Auxiliar functions
Index: b/luasocket-3.0-rc1/src/options.h
===================================================================
--- a/luasocket-3.0-rc1/src/options.h
+++ b/luasocket-3.0-rc1/src/options.h
@@ -32,12 +32,24 @@
 int opt_set_ip_multicast_loop(lua_State *L, p_socket ps);
 int opt_set_ip_add_membership(lua_State *L, p_socket ps);
 int opt_set_ip_drop_membersip(lua_State *L, p_socket ps);
+#ifdef IPV6_UNICAST_HOPS
 int opt_set_ip6_unicast_hops(lua_State *L, p_socket ps);
+#endif
+#ifdef IPV6_MULTICAST_HOPS
 int opt_set_ip6_multicast_hops(lua_State *L, p_socket ps);
+#endif
+#ifdef IPV6_MULTICAST_LOOP
 int opt_set_ip6_multicast_loop(lua_State *L, p_socket ps);
+#endif
+#ifdef IPV6_ADD_MEMBERSHIP
 int opt_set_ip6_add_membership(lua_State *L, p_socket ps);
+#endif
+#ifdef IPV6_DROP_MEMBERSHIP
 int opt_set_ip6_drop_membersip(lua_State *L, p_socket ps);
+#endif
+#ifdef IPV6_V6ONLY
 int opt_set_ip6_v6only(lua_State *L, p_socket ps);
+#endif
 
 /* supported options for getoption */
 int opt_get_reuseaddr(lua_State *L, p_socket ps);
@@ -48,10 +60,18 @@
 int opt_get_ip_multicast_loop(lua_State *L, p_socket ps);
 int opt_get_ip_multicast_if(lua_State *L, p_socket ps);
 int opt_get_error(lua_State *L, p_socket ps);
+#ifdef IPV6_MULTICAST_LOOP
 int opt_get_ip6_multicast_loop(lua_State *L, p_socket ps);
+#endif
+#ifdef IPV6_MULTICAST_HOPS
 int opt_get_ip6_multicast_hops(lua_State *L, p_socket ps);
+#endif
+#ifdef IPV6_UNICAST_HOPS
 int opt_get_ip6_unicast_hops(lua_State *L, p_socket ps);
+#endif
+#ifdef IPV6_V6ONLY
 int opt_get_ip6_v6only(lua_State *L, p_socket ps); 
+#endif
 
 /* invokes the appropriate option handler */
 int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps);
Index: b/luasocket-3.0-rc1/src/tcp.c
===================================================================
--- a/luasocket-3.0-rc1/src/tcp.c
+++ b/luasocket-3.0-rc1/src/tcp.c
@@ -81,7 +81,9 @@
     {"keepalive",   opt_set_keepalive},
     {"reuseaddr",   opt_set_reuseaddr},
     {"tcp-nodelay", opt_set_tcp_nodelay},
+#ifdef IPV6_V6ONLY
     {"ipv6-v6only", opt_set_ip6_v6only},
+#endif
     {"linger",      opt_set_linger},
     {NULL,          NULL}
 };
@@ -366,11 +368,13 @@
         auxiliar_setclass(L, "tcp{master}", -1);
         /* initialize remaining structure fields */
         socket_setnonblocking(&sock);
+#ifdef IPV6_V6ONLY
         if (family == PF_INET6) {
             int yes = 1;
             setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY,
                 (void *)&yes, sizeof(yes));
         }
+#endif
         tcp->sock = sock;
         io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv,
                 (p_error) socket_ioerror, &tcp->sock);
Index: b/luasocket-3.0-rc1/src/udp.c
===================================================================
--- a/luasocket-3.0-rc1/src/udp.c
+++ b/luasocket-3.0-rc1/src/udp.c
@@ -78,12 +78,22 @@
     {"ip-multicast-loop",    opt_set_ip_multicast_loop},
     {"ip-add-membership",    opt_set_ip_add_membership},
     {"ip-drop-membership",   opt_set_ip_drop_membersip},
+#ifdef IPV6_UNICAST_HOPS
     {"ipv6-unicast-hops",    opt_set_ip6_unicast_hops},
     {"ipv6-multicast-hops",  opt_set_ip6_unicast_hops},
+#endif
+#ifdef IPV6_MULTICAST_LOOP
     {"ipv6-multicast-loop",  opt_set_ip6_multicast_loop},
+#endif
+#ifdef IPV6_ADD_MEMBERSHIP
     {"ipv6-add-membership",  opt_set_ip6_add_membership},
+#endif
+#ifdef IPV6_DROP_MEMBERSHIP
     {"ipv6-drop-membership", opt_set_ip6_drop_membersip},
+#endif
+#ifdef IPV6_V6ONLY
     {"ipv6-v6only",          opt_set_ip6_v6only},
+#endif
     {NULL,                   NULL}
 };
 
@@ -92,10 +102,16 @@
     {"ip-multicast-if",      opt_get_ip_multicast_if},
     {"ip-multicast-loop",    opt_get_ip_multicast_loop},
     {"error",                opt_get_error},
+#ifdef IPV6_UNICAST_HOPS
     {"ipv6-unicast-hops",    opt_get_ip6_unicast_hops},
     {"ipv6-multicast-hops",  opt_get_ip6_unicast_hops},
+#endif
+#ifdef IPV6_MULTICAST_LOOP
     {"ipv6-multicast-loop",  opt_get_ip6_multicast_loop},
+#endif
+#ifdef IPV6_V6ONLY
     {"ipv6-v6only",          opt_get_ip6_v6only},
+#endif
     {NULL,                   NULL}
 };
 
@@ -416,11 +432,13 @@
         auxiliar_setclass(L, "udp{unconnected}", -1);
         /* initialize remaining structure fields */
         socket_setnonblocking(&sock);
+#ifdef IPV6_V6ONLY
         if (family == PF_INET6) {
             int yes = 1;
             setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY,
                 (void *)&yes, sizeof(yes));
         }
+#endif
         udp->sock = sock;
         timeout_init(&udp->tm, -1, -1);
         udp->family = family;