mirror of
https://github.com/lunarmodules/luasocket.git
synced 2024-12-26 04:28:20 +01:00
Add "tcp-keepidle", "tcp-keepcnt" and "tcp-keepintvl" options
This commit is contained in:
parent
5edf093643
commit
2906d6a522
@ -433,6 +433,12 @@ used in validating addresses supplied in a call to
|
|||||||
<li> '<tt>tcp-nodelay</tt>': Setting this option to <tt>true</tt>
|
<li> '<tt>tcp-nodelay</tt>': Setting this option to <tt>true</tt>
|
||||||
disables the Nagle's algorithm for the connection;
|
disables the Nagle's algorithm for the connection;
|
||||||
|
|
||||||
|
<li> '<tt>tcp-keepidle</tt>': value in seconds for <tt>TCP_KEEPIDLE</tt> Linux only!!
|
||||||
|
|
||||||
|
<li> '<tt>tcp-keepcnt</tt>': value for <tt>TCP_KEEPCNT</tt> Linux only!!
|
||||||
|
|
||||||
|
<li> '<tt>tcp-keepintvl</tt>': value for <tt>TCP_KEEPINTVL</tt> Linux only!!
|
||||||
|
|
||||||
<li> '<tt>ipv6-v6only</tt>':
|
<li> '<tt>ipv6-v6only</tt>':
|
||||||
Setting this option to <tt>true</tt> restricts an <tt>inet6</tt> socket to
|
Setting this option to <tt>true</tt> restricts an <tt>inet6</tt> socket to
|
||||||
sending and receiving only IPv6 packets.
|
sending and receiving only IPv6 packets.
|
||||||
|
@ -90,6 +90,42 @@ int opt_get_tcp_nodelay(lua_State *L, p_socket ps)
|
|||||||
return opt_getboolean(L, ps, IPPROTO_TCP, TCP_NODELAY);
|
return opt_getboolean(L, ps, IPPROTO_TCP, TCP_NODELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef TCP_KEEPIDLE
|
||||||
|
int opt_get_tcp_keepidle(lua_State *L, p_socket ps)
|
||||||
|
{
|
||||||
|
return opt_getint(L, ps, IPPROTO_TCP, TCP_KEEPIDLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
int opt_set_tcp_keepidle(lua_State *L, p_socket ps)
|
||||||
|
{
|
||||||
|
return opt_setint(L, ps, IPPROTO_TCP, TCP_KEEPIDLE);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef TCP_KEEPCNT
|
||||||
|
int opt_get_tcp_keepcnt(lua_State *L, p_socket ps)
|
||||||
|
{
|
||||||
|
return opt_getint(L, ps, IPPROTO_TCP, TCP_KEEPCNT);
|
||||||
|
}
|
||||||
|
|
||||||
|
int opt_set_tcp_keepcnt(lua_State *L, p_socket ps)
|
||||||
|
{
|
||||||
|
return opt_setint(L, ps, IPPROTO_TCP, TCP_KEEPCNT);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef TCP_KEEPINTVL
|
||||||
|
int opt_get_tcp_keepintvl(lua_State *L, p_socket ps)
|
||||||
|
{
|
||||||
|
return opt_getint(L, ps, IPPROTO_TCP, TCP_KEEPINTVL);
|
||||||
|
}
|
||||||
|
|
||||||
|
int opt_set_tcp_keepintvl(lua_State *L, p_socket ps)
|
||||||
|
{
|
||||||
|
return opt_setint(L, ps, IPPROTO_TCP, TCP_KEEPINTVL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int opt_set_keepalive(lua_State *L, p_socket ps)
|
int opt_set_keepalive(lua_State *L, p_socket ps)
|
||||||
{
|
{
|
||||||
return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
|
return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
|
||||||
|
@ -23,6 +23,15 @@ int opt_set_dontroute(lua_State *L, p_socket ps);
|
|||||||
int opt_set_broadcast(lua_State *L, p_socket ps);
|
int opt_set_broadcast(lua_State *L, p_socket ps);
|
||||||
int opt_set_reuseaddr(lua_State *L, p_socket ps);
|
int opt_set_reuseaddr(lua_State *L, p_socket ps);
|
||||||
int opt_set_tcp_nodelay(lua_State *L, p_socket ps);
|
int opt_set_tcp_nodelay(lua_State *L, p_socket ps);
|
||||||
|
#ifdef TCP_KEEPIDLE
|
||||||
|
int opt_set_tcp_keepidle(lua_State *L, p_socket ps);
|
||||||
|
#endif
|
||||||
|
#ifdef TCP_KEEPCNT
|
||||||
|
int opt_set_tcp_keepcnt(lua_State *L, p_socket ps);
|
||||||
|
#endif
|
||||||
|
#ifdef TCP_KEEPINTVL
|
||||||
|
int opt_set_tcp_keepintvl(lua_State *L, p_socket ps);
|
||||||
|
#endif
|
||||||
int opt_set_keepalive(lua_State *L, p_socket ps);
|
int opt_set_keepalive(lua_State *L, p_socket ps);
|
||||||
int opt_set_linger(lua_State *L, p_socket ps);
|
int opt_set_linger(lua_State *L, p_socket ps);
|
||||||
int opt_set_reuseaddr(lua_State *L, p_socket ps);
|
int opt_set_reuseaddr(lua_State *L, p_socket ps);
|
||||||
@ -42,6 +51,15 @@ int opt_set_ip6_v6only(lua_State *L, p_socket ps);
|
|||||||
/* supported options for getoption */
|
/* supported options for getoption */
|
||||||
int opt_get_reuseaddr(lua_State *L, p_socket ps);
|
int opt_get_reuseaddr(lua_State *L, p_socket ps);
|
||||||
int opt_get_tcp_nodelay(lua_State *L, p_socket ps);
|
int opt_get_tcp_nodelay(lua_State *L, p_socket ps);
|
||||||
|
#ifdef TCP_KEEPIDLE
|
||||||
|
int opt_get_tcp_keepidle(lua_State *L, p_socket ps);
|
||||||
|
#endif
|
||||||
|
#ifdef TCP_KEEPCNT
|
||||||
|
int opt_get_tcp_keepcnt(lua_State *L, p_socket ps);
|
||||||
|
#endif
|
||||||
|
#ifdef TCP_KEEPINTVL
|
||||||
|
int opt_get_tcp_keepintvl(lua_State *L, p_socket ps);
|
||||||
|
#endif
|
||||||
int opt_get_keepalive(lua_State *L, p_socket ps);
|
int opt_get_keepalive(lua_State *L, p_socket ps);
|
||||||
int opt_get_linger(lua_State *L, p_socket ps);
|
int opt_get_linger(lua_State *L, p_socket ps);
|
||||||
int opt_get_reuseaddr(lua_State *L, p_socket ps);
|
int opt_get_reuseaddr(lua_State *L, p_socket ps);
|
||||||
|
18
src/tcp.c
18
src/tcp.c
@ -72,6 +72,15 @@ static t_opt optget[] = {
|
|||||||
{"keepalive", opt_get_keepalive},
|
{"keepalive", opt_get_keepalive},
|
||||||
{"reuseaddr", opt_get_reuseaddr},
|
{"reuseaddr", opt_get_reuseaddr},
|
||||||
{"tcp-nodelay", opt_get_tcp_nodelay},
|
{"tcp-nodelay", opt_get_tcp_nodelay},
|
||||||
|
#ifdef TCP_KEEPIDLE
|
||||||
|
{"tcp-keepidle", opt_get_tcp_keepidle},
|
||||||
|
#endif
|
||||||
|
#ifdef TCP_KEEPCNT
|
||||||
|
{"tcp-keepcnt", opt_get_tcp_keepcnt},
|
||||||
|
#endif
|
||||||
|
#ifdef TCP_KEEPINTVL
|
||||||
|
{"tcp-keepintvl", opt_get_tcp_keepintvl},
|
||||||
|
#endif
|
||||||
{"linger", opt_get_linger},
|
{"linger", opt_get_linger},
|
||||||
{"error", opt_get_error},
|
{"error", opt_get_error},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
@ -81,6 +90,15 @@ static t_opt optset[] = {
|
|||||||
{"keepalive", opt_set_keepalive},
|
{"keepalive", opt_set_keepalive},
|
||||||
{"reuseaddr", opt_set_reuseaddr},
|
{"reuseaddr", opt_set_reuseaddr},
|
||||||
{"tcp-nodelay", opt_set_tcp_nodelay},
|
{"tcp-nodelay", opt_set_tcp_nodelay},
|
||||||
|
#ifdef TCP_KEEPIDLE
|
||||||
|
{"tcp-keepidle", opt_set_tcp_keepidle},
|
||||||
|
#endif
|
||||||
|
#ifdef TCP_KEEPCNT
|
||||||
|
{"tcp-keepcnt", opt_set_tcp_keepcnt},
|
||||||
|
#endif
|
||||||
|
#ifdef TCP_KEEPINTVL
|
||||||
|
{"tcp-keepintvl", opt_set_tcp_keepintvl},
|
||||||
|
#endif
|
||||||
{"ipv6-v6only", opt_set_ip6_v6only},
|
{"ipv6-v6only", opt_set_ip6_v6only},
|
||||||
{"linger", opt_set_linger},
|
{"linger", opt_set_linger},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
|
@ -7,7 +7,9 @@ port = 8765
|
|||||||
function options(o)
|
function options(o)
|
||||||
print("options for", o)
|
print("options for", o)
|
||||||
|
|
||||||
for _, opt in ipairs{"keepalive", "reuseaddr", "tcp-nodelay"} do
|
for _, opt in ipairs{
|
||||||
|
"keepalive", "reuseaddr",
|
||||||
|
"tcp-nodelay", "tcp-keepidle", "tcp-keepcnt", "tcp-keepintvl"} do
|
||||||
print("getoption", opt, o:getoption(opt))
|
print("getoption", opt, o:getoption(opt))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user