1 #ifndef OPTIONS_H 2 #define OPTIONS_H 3 /*=========================================================================*\ 4 * Common option interface 5 * LuaSocket toolkit 6 * 7 * This module provides a common interface to socket options, used mainly by 8 * modules UDP and TCP. 9 \*=========================================================================*/ 10 11 #include "lua.h" 12 #include "socket.h" 13 14 /* option registry */ 15 typedef struct t_opt { 16 const char *name; 17 int (*func)(lua_State *L, p_socket ps); 18 } t_opt; 19 typedef t_opt *p_opt; 20 21 #ifndef IPV6_V6ONLY 22 #define IPV6_V6ONLY 27 23 #endif 24 25 /* supported options for setoption */ 26 int opt_set_dontroute(lua_State *L, p_socket ps); 27 int opt_set_broadcast(lua_State *L, p_socket ps); 28 int opt_set_reuseaddr(lua_State *L, p_socket ps); 29 int opt_set_tcp_nodelay(lua_State *L, p_socket ps); 30 int opt_set_keepalive(lua_State *L, p_socket ps); 31 int opt_set_linger(lua_State *L, p_socket ps); 32 int opt_set_reuseaddr(lua_State *L, p_socket ps); 33 int opt_set_reuseport(lua_State *L, p_socket ps); 34 int opt_set_ip_multicast_if(lua_State *L, p_socket ps); 35 int opt_set_ip_multicast_ttl(lua_State *L, p_socket ps); 36 int opt_set_ip_multicast_loop(lua_State *L, p_socket ps); 37 int opt_set_ip_add_membership(lua_State *L, p_socket ps); 38 int opt_set_ip_drop_membersip(lua_State *L, p_socket ps); 39 int opt_set_ip6_v6only(lua_State *L, p_socket ps); 40 41 /* supported options for getoption */ 42 int opt_get_reuseaddr(lua_State *L, p_socket ps); 43 int opt_get_tcp_nodelay(lua_State *L, p_socket ps); 44 int opt_get_keepalive(lua_State *L, p_socket ps); 45 int opt_get_linger(lua_State *L, p_socket ps); 46 int opt_get_reuseaddr(lua_State *L, p_socket ps); 47 int opt_get_ip_multicast_loop(lua_State *L, p_socket ps); 48 int opt_get_ip_multicast_if(lua_State *L, p_socket ps); 49 50 /* invokes the appropriate option handler */ 51 int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps); 52 int opt_meth_getoption(lua_State *L, p_opt opt, p_socket ps); 53 54 #endif 55