aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorE. Westbrook <github@westbrook.io>2019-02-27 20:58:46 -0700
committerE. Westbrook <github@westbrook.io>2019-03-10 00:04:20 -0700
commitce6a08d57de42f8f2a78fd63b1b2bc90b3cc0156 (patch)
treefb2064b434aa340a168a374e0a6cd6c3f64da5f1 /src
parent83648f8df2a6ec6d3061b2642ae8739da94eadbe (diff)
downloadluasocket-ce6a08d57de42f8f2a78fd63b1b2bc90b3cc0156.tar.gz
luasocket-ce6a08d57de42f8f2a78fd63b1b2bc90b3cc0156.tar.bz2
luasocket-ce6a08d57de42f8f2a78fd63b1b2bc90b3cc0156.zip
options: pragma visibility
Diffstat (limited to 'src')
-rw-r--r--src/options.c152
-rw-r--r--src/options.h98
2 files changed, 145 insertions, 105 deletions
diff --git a/src/options.c b/src/options.c
index b0bacbf..06ab58d 100644
--- a/src/options.c
+++ b/src/options.c
@@ -3,7 +3,6 @@
3* LuaSocket toolkit 3* LuaSocket toolkit
4\*=========================================================================*/ 4\*=========================================================================*/
5#include "luasocket.h" 5#include "luasocket.h"
6#include "lauxlib.h"
7#include "auxiliar.h" 6#include "auxiliar.h"
8#include "options.h" 7#include "options.h"
9#include "inet.h" 8#include "inet.h"
@@ -29,7 +28,7 @@ static int opt_get(lua_State *L, p_socket ps, int level, int name,
29/*-------------------------------------------------------------------------*\ 28/*-------------------------------------------------------------------------*\
30* Calls appropriate option handler 29* Calls appropriate option handler
31\*-------------------------------------------------------------------------*/ 30\*-------------------------------------------------------------------------*/
32LUASOCKET_PRIVATE int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps) 31int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps)
33{ 32{
34 const char *name = luaL_checkstring(L, 2); /* obj, name, ... */ 33 const char *name = luaL_checkstring(L, 2); /* obj, name, ... */
35 while (opt->name && strcmp(name, opt->name)) 34 while (opt->name && strcmp(name, opt->name))
@@ -42,7 +41,7 @@ LUASOCKET_PRIVATE int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps)
42 return opt->func(L, ps); 41 return opt->func(L, ps);
43} 42}
44 43
45LUASOCKET_PRIVATE int opt_meth_getoption(lua_State *L, p_opt opt, p_socket ps) 44int opt_meth_getoption(lua_State *L, p_opt opt, p_socket ps)
46{ 45{
47 const char *name = luaL_checkstring(L, 2); /* obj, name, ... */ 46 const char *name = luaL_checkstring(L, 2); /* obj, name, ... */
48 while (opt->name && strcmp(name, opt->name)) 47 while (opt->name && strcmp(name, opt->name))
@@ -55,166 +54,188 @@ LUASOCKET_PRIVATE int opt_meth_getoption(lua_State *L, p_opt opt, p_socket ps)
55 return opt->func(L, ps); 54 return opt->func(L, ps);
56} 55}
57 56
57// -------------------------------------------------------
58/* enables reuse of local address */ 58/* enables reuse of local address */
59LUASOCKET_PRIVATE int opt_set_reuseaddr(lua_State *L, p_socket ps) 59int opt_set_reuseaddr(lua_State *L, p_socket ps)
60{ 60{
61 return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEADDR); 61 return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEADDR);
62} 62}
63 63
64LUASOCKET_PRIVATE int opt_get_reuseaddr(lua_State *L, p_socket ps) 64int opt_get_reuseaddr(lua_State *L, p_socket ps)
65{ 65{
66 return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEADDR); 66 return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEADDR);
67} 67}
68 68
69// -------------------------------------------------------
69/* enables reuse of local port */ 70/* enables reuse of local port */
70LUASOCKET_PRIVATE int opt_set_reuseport(lua_State *L, p_socket ps) 71int opt_set_reuseport(lua_State *L, p_socket ps)
71{ 72{
72 return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEPORT); 73 return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEPORT);
73} 74}
74 75
75LUASOCKET_PRIVATE int opt_get_reuseport(lua_State *L, p_socket ps) 76int opt_get_reuseport(lua_State *L, p_socket ps)
76{ 77{
77 return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEPORT); 78 return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEPORT);
78} 79}
79 80
80/* disables the Naggle algorithm */ 81// -------------------------------------------------------
81LUASOCKET_PRIVATE int opt_set_tcp_nodelay(lua_State *L, p_socket ps) 82/* disables the Nagle algorithm */
83int opt_set_tcp_nodelay(lua_State *L, p_socket ps)
82{ 84{
83 return opt_setboolean(L, ps, IPPROTO_TCP, TCP_NODELAY); 85 return opt_setboolean(L, ps, IPPROTO_TCP, TCP_NODELAY);
84} 86}
85 87
86LUASOCKET_PRIVATE int opt_get_tcp_nodelay(lua_State *L, p_socket ps) 88int opt_get_tcp_nodelay(lua_State *L, p_socket ps)
87{ 89{
88 return opt_getboolean(L, ps, IPPROTO_TCP, TCP_NODELAY); 90 return opt_getboolean(L, ps, IPPROTO_TCP, TCP_NODELAY);
89} 91}
90 92
93// -------------------------------------------------------
91#ifdef TCP_KEEPIDLE 94#ifdef TCP_KEEPIDLE
92LUASOCKET_PRIVATE int opt_get_tcp_keepidle(lua_State *L, p_socket ps) 95
96int opt_get_tcp_keepidle(lua_State *L, p_socket ps)
93{ 97{
94 return opt_getint(L, ps, IPPROTO_TCP, TCP_KEEPIDLE); 98 return opt_getint(L, ps, IPPROTO_TCP, TCP_KEEPIDLE);
95} 99}
96 100
97LUASOCKET_PRIVATE int opt_set_tcp_keepidle(lua_State *L, p_socket ps) 101int opt_set_tcp_keepidle(lua_State *L, p_socket ps)
98{ 102{
99 return opt_setint(L, ps, IPPROTO_TCP, TCP_KEEPIDLE); 103 return opt_setint(L, ps, IPPROTO_TCP, TCP_KEEPIDLE);
100} 104}
105
101#endif 106#endif
102 107
108// -------------------------------------------------------
103#ifdef TCP_KEEPCNT 109#ifdef TCP_KEEPCNT
104LUASOCKET_PRIVATE int opt_get_tcp_keepcnt(lua_State *L, p_socket ps) 110
111int opt_get_tcp_keepcnt(lua_State *L, p_socket ps)
105{ 112{
106 return opt_getint(L, ps, IPPROTO_TCP, TCP_KEEPCNT); 113 return opt_getint(L, ps, IPPROTO_TCP, TCP_KEEPCNT);
107} 114}
108 115
109LUASOCKET_PRIVATE int opt_set_tcp_keepcnt(lua_State *L, p_socket ps) 116int opt_set_tcp_keepcnt(lua_State *L, p_socket ps)
110{ 117{
111 return opt_setint(L, ps, IPPROTO_TCP, TCP_KEEPCNT); 118 return opt_setint(L, ps, IPPROTO_TCP, TCP_KEEPCNT);
112} 119}
120
113#endif 121#endif
114 122
123// -------------------------------------------------------
115#ifdef TCP_KEEPINTVL 124#ifdef TCP_KEEPINTVL
116LUASOCKET_PRIVATE int opt_get_tcp_keepintvl(lua_State *L, p_socket ps) 125
126int opt_get_tcp_keepintvl(lua_State *L, p_socket ps)
117{ 127{
118 return opt_getint(L, ps, IPPROTO_TCP, TCP_KEEPINTVL); 128 return opt_getint(L, ps, IPPROTO_TCP, TCP_KEEPINTVL);
119} 129}
120 130
121LUASOCKET_PRIVATE int opt_set_tcp_keepintvl(lua_State *L, p_socket ps) 131int opt_set_tcp_keepintvl(lua_State *L, p_socket ps)
122{ 132{
123 return opt_setint(L, ps, IPPROTO_TCP, TCP_KEEPINTVL); 133 return opt_setint(L, ps, IPPROTO_TCP, TCP_KEEPINTVL);
124} 134}
135
125#endif 136#endif
126 137
127LUASOCKET_PRIVATE int opt_set_keepalive(lua_State *L, p_socket ps) 138// -------------------------------------------------------
139int opt_set_keepalive(lua_State *L, p_socket ps)
128{ 140{
129 return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE); 141 return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
130} 142}
131 143
132LUASOCKET_PRIVATE int opt_get_keepalive(lua_State *L, p_socket ps) 144int opt_get_keepalive(lua_State *L, p_socket ps)
133{ 145{
134 return opt_getboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE); 146 return opt_getboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
135} 147}
136 148
137LUASOCKET_PRIVATE int opt_set_dontroute(lua_State *L, p_socket ps) 149// -------------------------------------------------------
150int opt_set_dontroute(lua_State *L, p_socket ps)
138{ 151{
139 return opt_setboolean(L, ps, SOL_SOCKET, SO_DONTROUTE); 152 return opt_setboolean(L, ps, SOL_SOCKET, SO_DONTROUTE);
140} 153}
141 154
142LUASOCKET_PRIVATE int opt_get_dontroute(lua_State *L, p_socket ps) 155int opt_get_dontroute(lua_State *L, p_socket ps)
143{ 156{
144 return opt_getboolean(L, ps, SOL_SOCKET, SO_DONTROUTE); 157 return opt_getboolean(L, ps, SOL_SOCKET, SO_DONTROUTE);
145} 158}
146 159
147LUASOCKET_PRIVATE int opt_set_broadcast(lua_State *L, p_socket ps) 160// -------------------------------------------------------
161int opt_set_broadcast(lua_State *L, p_socket ps)
148{ 162{
149 return opt_setboolean(L, ps, SOL_SOCKET, SO_BROADCAST); 163 return opt_setboolean(L, ps, SOL_SOCKET, SO_BROADCAST);
150} 164}
151 165
152LUASOCKET_PRIVATE int opt_set_recv_buf_size(lua_State *L, p_socket ps) 166int opt_get_broadcast(lua_State *L, p_socket ps)
167{
168 return opt_getboolean(L, ps, SOL_SOCKET, SO_BROADCAST);
169}
170
171// -------------------------------------------------------
172int opt_set_recv_buf_size(lua_State *L, p_socket ps)
153{ 173{
154 return opt_setint(L, ps, SOL_SOCKET, SO_RCVBUF); 174 return opt_setint(L, ps, SOL_SOCKET, SO_RCVBUF);
155} 175}
156 176
157LUASOCKET_PRIVATE int opt_get_recv_buf_size(lua_State *L, p_socket ps) 177int opt_get_recv_buf_size(lua_State *L, p_socket ps)
158{ 178{
159 return opt_getint(L, ps, SOL_SOCKET, SO_RCVBUF); 179 return opt_getint(L, ps, SOL_SOCKET, SO_RCVBUF);
160} 180}
161 181
162LUASOCKET_PRIVATE int opt_get_send_buf_size(lua_State *L, p_socket ps) 182// -------------------------------------------------------
183int opt_get_send_buf_size(lua_State *L, p_socket ps)
163{ 184{
164 return opt_getint(L, ps, SOL_SOCKET, SO_SNDBUF); 185 return opt_getint(L, ps, SOL_SOCKET, SO_SNDBUF);
165} 186}
166 187
167LUASOCKET_PRIVATE int opt_set_send_buf_size(lua_State *L, p_socket ps) 188int opt_set_send_buf_size(lua_State *L, p_socket ps)
168{ 189{
169 return opt_setint(L, ps, SOL_SOCKET, SO_SNDBUF); 190 return opt_setint(L, ps, SOL_SOCKET, SO_SNDBUF);
170} 191}
171 192
172LUASOCKET_PRIVATE int opt_get_broadcast(lua_State *L, p_socket ps) 193// -------------------------------------------------------
173{ 194int opt_set_ip6_unicast_hops(lua_State *L, p_socket ps)
174 return opt_getboolean(L, ps, SOL_SOCKET, SO_BROADCAST);
175}
176
177LUASOCKET_PRIVATE int opt_set_ip6_unicast_hops(lua_State *L, p_socket ps)
178{ 195{
179 return opt_setint(L, ps, IPPROTO_IPV6, IPV6_UNICAST_HOPS); 196 return opt_setint(L, ps, IPPROTO_IPV6, IPV6_UNICAST_HOPS);
180} 197}
181 198
182LUASOCKET_PRIVATE int opt_get_ip6_unicast_hops(lua_State *L, p_socket ps) 199int opt_get_ip6_unicast_hops(lua_State *L, p_socket ps)
183{ 200{
184 return opt_getint(L, ps, IPPROTO_IPV6, IPV6_UNICAST_HOPS); 201 return opt_getint(L, ps, IPPROTO_IPV6, IPV6_UNICAST_HOPS);
185} 202}
186 203
187LUASOCKET_PRIVATE int opt_set_ip6_multicast_hops(lua_State *L, p_socket ps) 204// -------------------------------------------------------
205int opt_set_ip6_multicast_hops(lua_State *L, p_socket ps)
188{ 206{
189 return opt_setint(L, ps, IPPROTO_IPV6, IPV6_MULTICAST_HOPS); 207 return opt_setint(L, ps, IPPROTO_IPV6, IPV6_MULTICAST_HOPS);
190} 208}
191 209
192LUASOCKET_PRIVATE int opt_get_ip6_multicast_hops(lua_State *L, p_socket ps) 210int opt_get_ip6_multicast_hops(lua_State *L, p_socket ps)
193{ 211{
194 return opt_getint(L, ps, IPPROTO_IPV6, IPV6_MULTICAST_HOPS); 212 return opt_getint(L, ps, IPPROTO_IPV6, IPV6_MULTICAST_HOPS);
195} 213}
196 214
197LUASOCKET_PRIVATE int opt_set_ip_multicast_loop(lua_State *L, p_socket ps) 215// -------------------------------------------------------
216int opt_set_ip_multicast_loop(lua_State *L, p_socket ps)
198{ 217{
199 return opt_setboolean(L, ps, IPPROTO_IP, IP_MULTICAST_LOOP); 218 return opt_setboolean(L, ps, IPPROTO_IP, IP_MULTICAST_LOOP);
200} 219}
201 220
202LUASOCKET_PRIVATE int opt_get_ip_multicast_loop(lua_State *L, p_socket ps) 221int opt_get_ip_multicast_loop(lua_State *L, p_socket ps)
203{ 222{
204 return opt_getboolean(L, ps, IPPROTO_IP, IP_MULTICAST_LOOP); 223 return opt_getboolean(L, ps, IPPROTO_IP, IP_MULTICAST_LOOP);
205} 224}
206 225
207LUASOCKET_PRIVATE int opt_set_ip6_multicast_loop(lua_State *L, p_socket ps) 226// -------------------------------------------------------
227int opt_set_ip6_multicast_loop(lua_State *L, p_socket ps)
208{ 228{
209 return opt_setboolean(L, ps, IPPROTO_IPV6, IPV6_MULTICAST_LOOP); 229 return opt_setboolean(L, ps, IPPROTO_IPV6, IPV6_MULTICAST_LOOP);
210} 230}
211 231
212LUASOCKET_PRIVATE int opt_get_ip6_multicast_loop(lua_State *L, p_socket ps) 232int opt_get_ip6_multicast_loop(lua_State *L, p_socket ps)
213{ 233{
214 return opt_getboolean(L, ps, IPPROTO_IPV6, IPV6_MULTICAST_LOOP); 234 return opt_getboolean(L, ps, IPPROTO_IPV6, IPV6_MULTICAST_LOOP);
215} 235}
216 236
217LUASOCKET_PRIVATE int opt_set_linger(lua_State *L, p_socket ps) 237// -------------------------------------------------------
238int opt_set_linger(lua_State *L, p_socket ps)
218{ 239{
219 struct linger li; /* obj, name, table */ 240 struct linger li; /* obj, name, table */
220 if (!lua_istable(L, 3)) auxiliar_typeerror(L,3,lua_typename(L, LUA_TTABLE)); 241 if (!lua_istable(L, 3)) auxiliar_typeerror(L,3,lua_typename(L, LUA_TTABLE));
@@ -231,7 +252,7 @@ LUASOCKET_PRIVATE int opt_set_linger(lua_State *L, p_socket ps)
231 return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(li)); 252 return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(li));
232} 253}
233 254
234LUASOCKET_PRIVATE int opt_get_linger(lua_State *L, p_socket ps) 255int opt_get_linger(lua_State *L, p_socket ps)
235{ 256{
236 struct linger li; /* obj, name */ 257 struct linger li; /* obj, name */
237 int len = sizeof(li); 258 int len = sizeof(li);
@@ -246,12 +267,14 @@ LUASOCKET_PRIVATE int opt_get_linger(lua_State *L, p_socket ps)
246 return 1; 267 return 1;
247} 268}
248 269
249LUASOCKET_PRIVATE int opt_set_ip_multicast_ttl(lua_State *L, p_socket ps) 270// -------------------------------------------------------
271int opt_set_ip_multicast_ttl(lua_State *L, p_socket ps)
250{ 272{
251 return opt_setint(L, ps, IPPROTO_IP, IP_MULTICAST_TTL); 273 return opt_setint(L, ps, IPPROTO_IP, IP_MULTICAST_TTL);
252} 274}
253 275
254LUASOCKET_PRIVATE int opt_set_ip_multicast_if(lua_State *L, p_socket ps) 276// -------------------------------------------------------
277int opt_set_ip_multicast_if(lua_State *L, p_socket ps)
255{ 278{
256 const char *address = luaL_checkstring(L, 3); /* obj, name, ip */ 279 const char *address = luaL_checkstring(L, 3); /* obj, name, ip */
257 struct in_addr val; 280 struct in_addr val;
@@ -262,7 +285,7 @@ LUASOCKET_PRIVATE int opt_set_ip_multicast_if(lua_State *L, p_socket ps)
262 (char *) &val, sizeof(val)); 285 (char *) &val, sizeof(val));
263} 286}
264 287
265LUASOCKET_PRIVATE int opt_get_ip_multicast_if(lua_State *L, p_socket ps) 288int opt_get_ip_multicast_if(lua_State *L, p_socket ps)
266{ 289{
267 struct in_addr val; 290 struct in_addr val;
268 socklen_t len = sizeof(val); 291 socklen_t len = sizeof(val);
@@ -275,36 +298,52 @@ LUASOCKET_PRIVATE int opt_get_ip_multicast_if(lua_State *L, p_socket ps)
275 return 1; 298 return 1;
276} 299}
277 300
278LUASOCKET_PRIVATE int opt_set_ip_add_membership(lua_State *L, p_socket ps) 301// -------------------------------------------------------
302int opt_set_ip_add_membership(lua_State *L, p_socket ps)
279{ 303{
280 return opt_setmembership(L, ps, IPPROTO_IP, IP_ADD_MEMBERSHIP); 304 return opt_setmembership(L, ps, IPPROTO_IP, IP_ADD_MEMBERSHIP);
281} 305}
282 306
283LUASOCKET_PRIVATE int opt_set_ip_drop_membersip(lua_State *L, p_socket ps) 307int opt_set_ip_drop_membersip(lua_State *L, p_socket ps)
284{ 308{
285 return opt_setmembership(L, ps, IPPROTO_IP, IP_DROP_MEMBERSHIP); 309 return opt_setmembership(L, ps, IPPROTO_IP, IP_DROP_MEMBERSHIP);
286} 310}
287 311
288LUASOCKET_PRIVATE int opt_set_ip6_add_membership(lua_State *L, p_socket ps) 312// -------------------------------------------------------
313int opt_set_ip6_add_membership(lua_State *L, p_socket ps)
289{ 314{
290 return opt_ip6_setmembership(L, ps, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP); 315 return opt_ip6_setmembership(L, ps, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP);
291} 316}
292 317
293LUASOCKET_PRIVATE int opt_set_ip6_drop_membersip(lua_State *L, p_socket ps) 318int opt_set_ip6_drop_membersip(lua_State *L, p_socket ps)
294{ 319{
295 return opt_ip6_setmembership(L, ps, IPPROTO_IPV6, IPV6_DROP_MEMBERSHIP); 320 return opt_ip6_setmembership(L, ps, IPPROTO_IPV6, IPV6_DROP_MEMBERSHIP);
296} 321}
297 322// -------------------------------------------------------
298LUASOCKET_PRIVATE int opt_get_ip6_v6only(lua_State *L, p_socket ps) 323int opt_get_ip6_v6only(lua_State *L, p_socket ps)
299{ 324{
300 return opt_getboolean(L, ps, IPPROTO_IPV6, IPV6_V6ONLY); 325 return opt_getboolean(L, ps, IPPROTO_IPV6, IPV6_V6ONLY);
301} 326}
302 327
303LUASOCKET_PRIVATE int opt_set_ip6_v6only(lua_State *L, p_socket ps) 328int opt_set_ip6_v6only(lua_State *L, p_socket ps)
304{ 329{
305 return opt_setboolean(L, ps, IPPROTO_IPV6, IPV6_V6ONLY); 330 return opt_setboolean(L, ps, IPPROTO_IPV6, IPV6_V6ONLY);
306} 331}
307 332
333// -------------------------------------------------------
334int opt_get_error(lua_State *L, p_socket ps)
335{
336 int val = 0;
337 socklen_t len = sizeof(val);
338 if (getsockopt(*ps, SOL_SOCKET, SO_ERROR, (char *) &val, &len) < 0) {
339 lua_pushnil(L);
340 lua_pushstring(L, "getsockopt failed");
341 return 2;
342 }
343 lua_pushstring(L, socket_strerror(val));
344 return 1;
345}
346
308/*=========================================================================*\ 347/*=========================================================================*\
309* Auxiliar functions 348* Auxiliar functions
310\*=========================================================================*/ 349\*=========================================================================*/
@@ -391,19 +430,6 @@ static int opt_getboolean(lua_State *L, p_socket ps, int level, int name)
391 return 1; 430 return 1;
392} 431}
393 432
394LUASOCKET_PRIVATE int opt_get_error(lua_State *L, p_socket ps)
395{
396 int val = 0;
397 socklen_t len = sizeof(val);
398 if (getsockopt(*ps, SOL_SOCKET, SO_ERROR, (char *) &val, &len) < 0) {
399 lua_pushnil(L);
400 lua_pushstring(L, "getsockopt failed");
401 return 2;
402 }
403 lua_pushstring(L, socket_strerror(val));
404 return 1;
405}
406
407static int opt_setboolean(lua_State *L, p_socket ps, int level, int name) 433static int opt_setboolean(lua_State *L, p_socket ps, int level, int name)
408{ 434{
409 int val = auxiliar_checkboolean(L, 3); /* obj, name, bool */ 435 int val = auxiliar_checkboolean(L, 3); /* obj, name, bool */
diff --git a/src/options.h b/src/options.h
index fb82c4d..1457f43 100644
--- a/src/options.h
+++ b/src/options.h
@@ -8,7 +8,7 @@
8* modules UDP and TCP. 8* modules UDP and TCP.
9\*=========================================================================*/ 9\*=========================================================================*/
10 10
11#include "lua.h" 11#include "luasocket.h"
12#include "socket.h" 12#include "socket.h"
13 13
14/* option registry */ 14/* option registry */
@@ -18,67 +18,81 @@ typedef struct t_opt {
18} t_opt; 18} t_opt;
19typedef t_opt *p_opt; 19typedef t_opt *p_opt;
20 20
21/* supported options for setoption */ 21#pragma GCC visibility push(hidden)
22int opt_set_dontroute(lua_State *L, p_socket ps); 22
23int opt_set_broadcast(lua_State *L, p_socket ps); 23int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps);
24int opt_meth_getoption(lua_State *L, p_opt opt, p_socket ps);
25
26int opt_set_reuseaddr(lua_State *L, p_socket ps);
27int opt_get_reuseaddr(lua_State *L, p_socket ps);
28
29int opt_set_reuseport(lua_State *L, p_socket ps);
30int opt_get_reuseport(lua_State *L, p_socket ps);
31
24int opt_set_tcp_nodelay(lua_State *L, p_socket ps); 32int opt_set_tcp_nodelay(lua_State *L, p_socket ps);
33int opt_get_tcp_nodelay(lua_State *L, p_socket ps);
34
25#ifdef TCP_KEEPIDLE 35#ifdef TCP_KEEPIDLE
26int opt_set_tcp_keepidle(lua_State *L, p_socket ps); 36int opt_set_tcp_keepidle(lua_State *L, p_socket ps);
37int opt_get_tcp_keepidle(lua_State *L, p_socket ps);
27#endif 38#endif
39
28#ifdef TCP_KEEPCNT 40#ifdef TCP_KEEPCNT
29int opt_set_tcp_keepcnt(lua_State *L, p_socket ps); 41int opt_set_tcp_keepcnt(lua_State *L, p_socket ps);
42int opt_get_tcp_keepcnt(lua_State *L, p_socket ps);
30#endif 43#endif
44
31#ifdef TCP_KEEPINTVL 45#ifdef TCP_KEEPINTVL
32int opt_set_tcp_keepintvl(lua_State *L, p_socket ps); 46int opt_set_tcp_keepintvl(lua_State *L, p_socket ps);
47int opt_get_tcp_keepintvl(lua_State *L, p_socket ps);
33#endif 48#endif
49
34int opt_set_keepalive(lua_State *L, p_socket ps); 50int opt_set_keepalive(lua_State *L, p_socket ps);
51int opt_get_keepalive(lua_State *L, p_socket ps);
52
53int opt_set_dontroute(lua_State *L, p_socket ps);
54int opt_get_dontroute(lua_State *L, p_socket ps);
55
56int opt_set_broadcast(lua_State *L, p_socket ps);
57int opt_get_broadcast(lua_State *L, p_socket ps);
58
59int opt_set_recv_buf_size(lua_State *L, p_socket ps);
60int opt_get_recv_buf_size(lua_State *L, p_socket ps);
61
62int opt_set_send_buf_size(lua_State *L, p_socket ps);
63int opt_get_send_buf_size(lua_State *L, p_socket ps);
64
65int opt_set_ip6_unicast_hops(lua_State *L, p_socket ps);
66int opt_get_ip6_unicast_hops(lua_State *L, p_socket ps);
67
68int opt_set_ip6_multicast_hops(lua_State *L, p_socket ps);
69int opt_get_ip6_multicast_hops(lua_State *L, p_socket ps);
70
71int opt_set_ip_multicast_loop(lua_State *L, p_socket ps);
72int opt_get_ip_multicast_loop(lua_State *L, p_socket ps);
73
74int opt_set_ip6_multicast_loop(lua_State *L, p_socket ps);
75int opt_get_ip6_multicast_loop(lua_State *L, p_socket ps);
76
35int opt_set_linger(lua_State *L, p_socket ps); 77int opt_set_linger(lua_State *L, p_socket ps);
36int opt_set_reuseaddr(lua_State *L, p_socket ps); 78int opt_get_linger(lua_State *L, p_socket ps);
37int opt_set_reuseport(lua_State *L, p_socket ps); 79
38int opt_set_ip_multicast_if(lua_State *L, p_socket ps);
39int opt_set_ip_multicast_ttl(lua_State *L, p_socket ps); 80int opt_set_ip_multicast_ttl(lua_State *L, p_socket ps);
40int opt_set_ip_multicast_loop(lua_State *L, p_socket ps); 81
82int opt_set_ip_multicast_if(lua_State *L, p_socket ps);
83int opt_get_ip_multicast_if(lua_State *L, p_socket ps);
84
41int opt_set_ip_add_membership(lua_State *L, p_socket ps); 85int opt_set_ip_add_membership(lua_State *L, p_socket ps);
42int opt_set_ip_drop_membersip(lua_State *L, p_socket ps); 86int opt_set_ip_drop_membersip(lua_State *L, p_socket ps);
43int opt_set_ip6_unicast_hops(lua_State *L, p_socket ps); 87
44int opt_set_ip6_multicast_hops(lua_State *L, p_socket ps);
45int opt_set_ip6_multicast_loop(lua_State *L, p_socket ps);
46int opt_set_ip6_add_membership(lua_State *L, p_socket ps); 88int opt_set_ip6_add_membership(lua_State *L, p_socket ps);
47int opt_set_ip6_drop_membersip(lua_State *L, p_socket ps); 89int opt_set_ip6_drop_membersip(lua_State *L, p_socket ps);
90
48int opt_set_ip6_v6only(lua_State *L, p_socket ps); 91int opt_set_ip6_v6only(lua_State *L, p_socket ps);
49int opt_set_recv_buf_size(lua_State *L, p_socket ps); 92int opt_get_ip6_v6only(lua_State *L, p_socket ps);
50int opt_set_send_buf_size(lua_State *L, p_socket ps);
51 93
52/* supported options for getoption */
53int opt_get_dontroute(lua_State *L, p_socket ps);
54int opt_get_broadcast(lua_State *L, p_socket ps);
55int opt_get_reuseaddr(lua_State *L, p_socket ps);
56int opt_get_reuseport(lua_State *L, p_socket ps);
57int opt_get_tcp_nodelay(lua_State *L, p_socket ps);
58#ifdef TCP_KEEPIDLE
59int opt_get_tcp_keepidle(lua_State *L, p_socket ps);
60#endif
61#ifdef TCP_KEEPCNT
62int opt_get_tcp_keepcnt(lua_State *L, p_socket ps);
63#endif
64#ifdef TCP_KEEPINTVL
65int opt_get_tcp_keepintvl(lua_State *L, p_socket ps);
66#endif
67int opt_get_keepalive(lua_State *L, p_socket ps);
68int opt_get_linger(lua_State *L, p_socket ps);
69int opt_get_ip_multicast_loop(lua_State *L, p_socket ps);
70int opt_get_ip_multicast_if(lua_State *L, p_socket ps);
71int opt_get_error(lua_State *L, p_socket ps); 94int opt_get_error(lua_State *L, p_socket ps);
72int opt_get_ip6_multicast_loop(lua_State *L, p_socket ps);
73int opt_get_ip6_multicast_hops(lua_State *L, p_socket ps);
74int opt_get_ip6_unicast_hops(lua_State *L, p_socket ps);
75int opt_get_ip6_v6only(lua_State *L, p_socket ps);
76int opt_get_reuseport(lua_State *L, p_socket ps);
77int opt_get_recv_buf_size(lua_State *L, p_socket ps);
78int opt_get_send_buf_size(lua_State *L, p_socket ps);
79 95
80/* invokes the appropriate option handler */ 96#pragma GCC visibility pop
81int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps);
82int opt_meth_getoption(lua_State *L, p_opt opt, p_socket ps);
83 97
84#endif 98#endif