1
0
Fork 0
mirror of https://repo.or.cz/socat.git synced 2025-06-17 22:46:50 +00:00

Added options setsockopt-socket and setsockopt-connected

This commit is contained in:
Gerhard 2025-02-13 11:25:09 +01:00
parent e6aa3d1787
commit c8aec28b82
6 changed files with 19 additions and 0 deletions

View file

@ -110,6 +110,9 @@ Features:
Socat now prints an info message when implicitely setting SO_REUSEADDR. Socat now prints an info message when implicitely setting SO_REUSEADDR.
Thanks to Michael Renner for this suggestion. Thanks to Michael Renner for this suggestion.
Added generic options setsockopt-socket and setsockopt-connected that
are applied after socket() or when connected.
Building: Building:
Disabling certain features during configure could break build process. Disabling certain features during configure could break build process.

View file

@ -2408,6 +2408,12 @@ label(OPTION_SETSOCKOPT_STRING)dit(bf(tt(setsockopt-string=<level>:<optname>:<op
Like tt(setsockopt), but <optval> is a link(string)(TYPE_STRING). Like tt(setsockopt), but <optval> is a link(string)(TYPE_STRING).
This string is passed to the function with trailing null character, and the This string is passed to the function with trailing null character, and the
length parameter is automatically derived from the data. length parameter is automatically derived from the data.
label(OPTION_SETSOCKOPT_SOCKET)dit(bf(tt(setsockopt-socket=<level>:<optname>:<optval>)))
Like tt(setsockopt), but is applied to the socket before other operations
(code(bind()), code(connect()), code(accept()), ...)
label(OPTION_SETSOCKOPT_CONNECTED)dit(bf(tt(setsockopt-connected=<level>:<optname>:<optval>)))
Like tt(setsockopt), but is applied only when the socket has been connected
by a code(connect()) or code(listen()) call.
enddit() enddit()
startdit()enddit()nl() startdit()enddit()nl()

View file

@ -191,6 +191,8 @@ const struct optdesc opt_setsockopt_int = { "setsockopt-int", "sockopt-int
const struct optdesc opt_setsockopt_bin = { "setsockopt-bin", "sockopt-bin", OPT_SETSOCKOPT_BIN, GROUP_SOCKET,PH_CONNECTED, TYPE_INT_INT_BIN, OFUNC_SOCKOPT_GENERIC, 0, 0 }; const struct optdesc opt_setsockopt_bin = { "setsockopt-bin", "sockopt-bin", OPT_SETSOCKOPT_BIN, GROUP_SOCKET,PH_CONNECTED, TYPE_INT_INT_BIN, OFUNC_SOCKOPT_GENERIC, 0, 0 };
const struct optdesc opt_setsockopt_string = { "setsockopt-string", "sockopt-string", OPT_SETSOCKOPT_STRING, GROUP_SOCKET,PH_CONNECTED, TYPE_INT_INT_STRING, OFUNC_SOCKOPT_GENERIC, 0, 0 }; const struct optdesc opt_setsockopt_string = { "setsockopt-string", "sockopt-string", OPT_SETSOCKOPT_STRING, GROUP_SOCKET,PH_CONNECTED, TYPE_INT_INT_STRING, OFUNC_SOCKOPT_GENERIC, 0, 0 };
const struct optdesc opt_setsockopt_listen = { "setsockopt-listen", "sockopt-listen", OPT_SETSOCKOPT_LISTEN, GROUP_SOCKET,PH_PREBIND, TYPE_INT_INT_BIN, OFUNC_SOCKOPT_GENERIC, 0, 0 }; const struct optdesc opt_setsockopt_listen = { "setsockopt-listen", "sockopt-listen", OPT_SETSOCKOPT_LISTEN, GROUP_SOCKET,PH_PREBIND, TYPE_INT_INT_BIN, OFUNC_SOCKOPT_GENERIC, 0, 0 };
const struct optdesc opt_setsockopt_socket = { "setsockopt-socket", "sockopt-sock", OPT_SETSOCKOPT_SOCKET, GROUP_SOCKET,PH_PASTSOCKET, TYPE_INT_INT_BIN, OFUNC_SOCKOPT_GENERIC, 0, 0 };
const struct optdesc opt_setsockopt_connected = { "setsockopt-connected", "sockopt-conn", OPT_SETSOCKOPT_CONNECTED, GROUP_SOCKET,PH_CONNECTED, TYPE_INT_INT_BIN, OFUNC_SOCKOPT_GENERIC, 0, 0 };
const struct optdesc opt_null_eof = { "null-eof", NULL, OPT_NULL_EOF, GROUP_SOCKET, PH_OFFSET, TYPE_BOOL, OFUNC_OFFSET, XIO_OFFSETOF(para.socket.null_eof) }; const struct optdesc opt_null_eof = { "null-eof", NULL, OPT_NULL_EOF, GROUP_SOCKET, PH_OFFSET, TYPE_BOOL, OFUNC_OFFSET, XIO_OFFSETOF(para.socket.null_eof) };

View file

@ -83,6 +83,8 @@ extern const struct optdesc opt_setsockopt_bin;
extern const struct optdesc opt_setsockopt_string; extern const struct optdesc opt_setsockopt_string;
extern const struct optdesc opt_setsockopt_listen; extern const struct optdesc opt_setsockopt_listen;
extern const struct optdesc opt_null_eof; extern const struct optdesc opt_null_eof;
extern const struct optdesc opt_setsockopt_socket;
extern const struct optdesc opt_setsockopt_connected;
extern extern

View file

@ -1583,8 +1583,10 @@ const struct optname optionnames[] = {
#endif #endif
IF_SOCKET ("setsockopt", &opt_setsockopt) IF_SOCKET ("setsockopt", &opt_setsockopt)
IF_SOCKET ("setsockopt-bin", &opt_setsockopt_bin) IF_SOCKET ("setsockopt-bin", &opt_setsockopt_bin)
IF_SOCKET ("setsockopt-connected", &opt_setsockopt_connected)
IF_SOCKET ("setsockopt-int", &opt_setsockopt_int) IF_SOCKET ("setsockopt-int", &opt_setsockopt_int)
IF_SOCKET ("setsockopt-listen", &opt_setsockopt_listen) IF_SOCKET ("setsockopt-listen", &opt_setsockopt_listen)
IF_SOCKET ("setsockopt-socket", &opt_setsockopt_socket)
IF_SOCKET ("setsockopt-string", &opt_setsockopt_string) IF_SOCKET ("setsockopt-string", &opt_setsockopt_string)
IF_ANY ("setuid", &opt_setuid) IF_ANY ("setuid", &opt_setuid)
IF_ANY ("setuid-early", &opt_setuid_early) IF_ANY ("setuid-early", &opt_setuid_early)
@ -1719,8 +1721,10 @@ const struct optname optionnames[] = {
#endif /* SO_USELOOPBACK */ #endif /* SO_USELOOPBACK */
IF_SOCKET ("sockopt", &opt_setsockopt) IF_SOCKET ("sockopt", &opt_setsockopt)
IF_SOCKET ("sockopt-bin", &opt_setsockopt_bin) IF_SOCKET ("sockopt-bin", &opt_setsockopt_bin)
IF_SOCKET ("sockopt-conn", &opt_setsockopt_connected)
IF_SOCKET ("sockopt-int", &opt_setsockopt_int) IF_SOCKET ("sockopt-int", &opt_setsockopt_int)
IF_SOCKET ("sockopt-listen", &opt_setsockopt_listen) IF_SOCKET ("sockopt-listen", &opt_setsockopt_listen)
IF_SOCKET ("sockopt-sock", &opt_setsockopt_socket)
IF_SOCKET ("sockopt-string", &opt_setsockopt_string) IF_SOCKET ("sockopt-string", &opt_setsockopt_string)
IF_SOCKS4 ("socksport", &opt_socksport) IF_SOCKS4 ("socksport", &opt_socksport)
IF_SOCKS4 ("socksuser", &opt_socksuser) IF_SOCKS4 ("socksuser", &opt_socksuser)

View file

@ -663,8 +663,10 @@ enum e_optcode {
OPT_SETPGID, OPT_SETPGID,
OPT_SETSID, OPT_SETSID,
OPT_SETSOCKOPT_BIN, OPT_SETSOCKOPT_BIN,
OPT_SETSOCKOPT_CONNECTED,
OPT_SETSOCKOPT_INT, OPT_SETSOCKOPT_INT,
OPT_SETSOCKOPT_LISTEN, OPT_SETSOCKOPT_LISTEN,
OPT_SETSOCKOPT_SOCKET,
OPT_SETSOCKOPT_STRING, OPT_SETSOCKOPT_STRING,
OPT_SETUID, OPT_SETUID,
OPT_SETUID_EARLY, OPT_SETUID_EARLY,