diff options
| author | Victor Seva <linuxmaniac@torreviejawireless.org> | 2014-12-05 13:17:50 +0100 |
|---|---|---|
| committer | Victor Seva <linuxmaniac@torreviejawireless.org> | 2014-12-05 13:17:50 +0100 |
| commit | 2906d6a5227df25f14305c373fdde057f388d363 (patch) | |
| tree | 2f76f59323008656a23830f0efc9c3d3aff95774 /src | |
| parent | 5edf093643cceb329392aec9606ab3988579b821 (diff) | |
| download | luasocket-2906d6a5227df25f14305c373fdde057f388d363.tar.gz luasocket-2906d6a5227df25f14305c373fdde057f388d363.tar.bz2 luasocket-2906d6a5227df25f14305c373fdde057f388d363.zip | |
Add "tcp-keepidle", "tcp-keepcnt" and "tcp-keepintvl" options
Diffstat (limited to 'src')
| -rw-r--r-- | src/options.c | 36 | ||||
| -rw-r--r-- | src/options.h | 18 | ||||
| -rw-r--r-- | src/tcp.c | 18 |
3 files changed, 72 insertions, 0 deletions
diff --git a/src/options.c b/src/options.c index 8ac2a14..28fc08a 100644 --- a/src/options.c +++ b/src/options.c | |||
| @@ -90,6 +90,42 @@ int opt_get_tcp_nodelay(lua_State *L, p_socket ps) | |||
| 90 | return opt_getboolean(L, ps, IPPROTO_TCP, TCP_NODELAY); | 90 | return opt_getboolean(L, ps, IPPROTO_TCP, TCP_NODELAY); |
| 91 | } | 91 | } |
| 92 | 92 | ||
| 93 | #ifdef TCP_KEEPIDLE | ||
| 94 | int opt_get_tcp_keepidle(lua_State *L, p_socket ps) | ||
| 95 | { | ||
| 96 | return opt_getint(L, ps, IPPROTO_TCP, TCP_KEEPIDLE); | ||
| 97 | } | ||
| 98 | |||
| 99 | int opt_set_tcp_keepidle(lua_State *L, p_socket ps) | ||
| 100 | { | ||
| 101 | return opt_setint(L, ps, IPPROTO_TCP, TCP_KEEPIDLE); | ||
| 102 | } | ||
| 103 | #endif | ||
| 104 | |||
| 105 | #ifdef TCP_KEEPCNT | ||
| 106 | int opt_get_tcp_keepcnt(lua_State *L, p_socket ps) | ||
| 107 | { | ||
| 108 | return opt_getint(L, ps, IPPROTO_TCP, TCP_KEEPCNT); | ||
| 109 | } | ||
| 110 | |||
| 111 | int opt_set_tcp_keepcnt(lua_State *L, p_socket ps) | ||
| 112 | { | ||
| 113 | return opt_setint(L, ps, IPPROTO_TCP, TCP_KEEPCNT); | ||
| 114 | } | ||
| 115 | #endif | ||
| 116 | |||
| 117 | #ifdef TCP_KEEPINTVL | ||
| 118 | int opt_get_tcp_keepintvl(lua_State *L, p_socket ps) | ||
| 119 | { | ||
| 120 | return opt_getint(L, ps, IPPROTO_TCP, TCP_KEEPINTVL); | ||
| 121 | } | ||
| 122 | |||
| 123 | int opt_set_tcp_keepintvl(lua_State *L, p_socket ps) | ||
| 124 | { | ||
| 125 | return opt_setint(L, ps, IPPROTO_TCP, TCP_KEEPINTVL); | ||
| 126 | } | ||
| 127 | #endif | ||
| 128 | |||
| 93 | int opt_set_keepalive(lua_State *L, p_socket ps) | 129 | int opt_set_keepalive(lua_State *L, p_socket ps) |
| 94 | { | 130 | { |
| 95 | return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE); | 131 | return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE); |
diff --git a/src/options.h b/src/options.h index 5657a06..2b6697b 100644 --- a/src/options.h +++ b/src/options.h | |||
| @@ -23,6 +23,15 @@ int opt_set_dontroute(lua_State *L, p_socket ps); | |||
| 23 | int opt_set_broadcast(lua_State *L, p_socket ps); | 23 | int opt_set_broadcast(lua_State *L, p_socket ps); |
| 24 | int opt_set_reuseaddr(lua_State *L, p_socket ps); | 24 | int opt_set_reuseaddr(lua_State *L, p_socket ps); |
| 25 | int opt_set_tcp_nodelay(lua_State *L, p_socket ps); | 25 | int opt_set_tcp_nodelay(lua_State *L, p_socket ps); |
| 26 | #ifdef TCP_KEEPIDLE | ||
| 27 | int opt_set_tcp_keepidle(lua_State *L, p_socket ps); | ||
| 28 | #endif | ||
| 29 | #ifdef TCP_KEEPCNT | ||
| 30 | int opt_set_tcp_keepcnt(lua_State *L, p_socket ps); | ||
| 31 | #endif | ||
| 32 | #ifdef TCP_KEEPINTVL | ||
| 33 | int opt_set_tcp_keepintvl(lua_State *L, p_socket ps); | ||
| 34 | #endif | ||
| 26 | int opt_set_keepalive(lua_State *L, p_socket ps); | 35 | int opt_set_keepalive(lua_State *L, p_socket ps); |
| 27 | int opt_set_linger(lua_State *L, p_socket ps); | 36 | int opt_set_linger(lua_State *L, p_socket ps); |
| 28 | int opt_set_reuseaddr(lua_State *L, p_socket ps); | 37 | 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); | |||
| 42 | /* supported options for getoption */ | 51 | /* supported options for getoption */ |
| 43 | int opt_get_reuseaddr(lua_State *L, p_socket ps); | 52 | int opt_get_reuseaddr(lua_State *L, p_socket ps); |
| 44 | int opt_get_tcp_nodelay(lua_State *L, p_socket ps); | 53 | int opt_get_tcp_nodelay(lua_State *L, p_socket ps); |
| 54 | #ifdef TCP_KEEPIDLE | ||
| 55 | int opt_get_tcp_keepidle(lua_State *L, p_socket ps); | ||
| 56 | #endif | ||
| 57 | #ifdef TCP_KEEPCNT | ||
| 58 | int opt_get_tcp_keepcnt(lua_State *L, p_socket ps); | ||
| 59 | #endif | ||
| 60 | #ifdef TCP_KEEPINTVL | ||
| 61 | int opt_get_tcp_keepintvl(lua_State *L, p_socket ps); | ||
| 62 | #endif | ||
| 45 | int opt_get_keepalive(lua_State *L, p_socket ps); | 63 | int opt_get_keepalive(lua_State *L, p_socket ps); |
| 46 | int opt_get_linger(lua_State *L, p_socket ps); | 64 | int opt_get_linger(lua_State *L, p_socket ps); |
| 47 | int opt_get_reuseaddr(lua_State *L, p_socket ps); | 65 | int opt_get_reuseaddr(lua_State *L, p_socket ps); |
| @@ -72,6 +72,15 @@ static t_opt optget[] = { | |||
| 72 | {"keepalive", opt_get_keepalive}, | 72 | {"keepalive", opt_get_keepalive}, |
| 73 | {"reuseaddr", opt_get_reuseaddr}, | 73 | {"reuseaddr", opt_get_reuseaddr}, |
| 74 | {"tcp-nodelay", opt_get_tcp_nodelay}, | 74 | {"tcp-nodelay", opt_get_tcp_nodelay}, |
| 75 | #ifdef TCP_KEEPIDLE | ||
| 76 | {"tcp-keepidle", opt_get_tcp_keepidle}, | ||
| 77 | #endif | ||
| 78 | #ifdef TCP_KEEPCNT | ||
| 79 | {"tcp-keepcnt", opt_get_tcp_keepcnt}, | ||
| 80 | #endif | ||
| 81 | #ifdef TCP_KEEPINTVL | ||
| 82 | {"tcp-keepintvl", opt_get_tcp_keepintvl}, | ||
| 83 | #endif | ||
| 75 | {"linger", opt_get_linger}, | 84 | {"linger", opt_get_linger}, |
| 76 | {"error", opt_get_error}, | 85 | {"error", opt_get_error}, |
| 77 | {NULL, NULL} | 86 | {NULL, NULL} |
| @@ -81,6 +90,15 @@ static t_opt optset[] = { | |||
| 81 | {"keepalive", opt_set_keepalive}, | 90 | {"keepalive", opt_set_keepalive}, |
| 82 | {"reuseaddr", opt_set_reuseaddr}, | 91 | {"reuseaddr", opt_set_reuseaddr}, |
| 83 | {"tcp-nodelay", opt_set_tcp_nodelay}, | 92 | {"tcp-nodelay", opt_set_tcp_nodelay}, |
| 93 | #ifdef TCP_KEEPIDLE | ||
| 94 | {"tcp-keepidle", opt_set_tcp_keepidle}, | ||
| 95 | #endif | ||
| 96 | #ifdef TCP_KEEPCNT | ||
| 97 | {"tcp-keepcnt", opt_set_tcp_keepcnt}, | ||
| 98 | #endif | ||
| 99 | #ifdef TCP_KEEPINTVL | ||
| 100 | {"tcp-keepintvl", opt_set_tcp_keepintvl}, | ||
| 101 | #endif | ||
| 84 | {"ipv6-v6only", opt_set_ip6_v6only}, | 102 | {"ipv6-v6only", opt_set_ip6_v6only}, |
| 85 | {"linger", opt_set_linger}, | 103 | {"linger", opt_set_linger}, |
| 86 | {NULL, NULL} | 104 | {NULL, NULL} |
