socat by Gerhard Rieger and contributors - see www.dest-unreach.org Usage: socat [options] options (general command line options): -V print version and feature information to stdout, and exit -h|-? print a help text describing command line options and addresses -hh like -h, plus a list of all common address option names -hhh like -hh, plus a list of all available address option names -d[ddd] increase verbosity (use up to 4 times; 2 are recommended) -d0|1|2|3|4 set verbosity level (0: Errors; 4 all including Debug) -D analyze file descriptors before loop --experimental enable experimental features --statistics output transfer statistics on exit -ly[facility] log to syslog, using facility (default is daemon) -lf log to file -ls log to stderr (default if no other log) -lm[facility] mixed log mode (stderr during initialization, then syslog) -lp set the program name used for logging and vars -lu use microseconds for logging timestamps -lh add hostname to log messages -v verbose text dump of data traffic -x verbose hexadecimal dump of data traffic -r raw dump of data flowing from left to right -R raw dump of data flowing from right to left -b set data buffer size (8192) -s sloppy (continue on error) -S log these signals, override default -t wait seconds before closing second channel -T total inactivity timeout in seconds -u unidirectional mode (left to right) -U unidirectional mode (right to left) -g do not check option groups -L try to obtain lock, or fail -W try to obtain lock, or wait -0 do not prefer an IP version -4 prefer IPv4 if version is not explicitly specified -6 prefer IPv6 if version is not explicitly specified bi-address: /* is an address that may act both as data sync and source */ !! single-address: [,] address-head: ABSTRACT-CLIENT: groups=FD,SOCKET,RETRY,UNIX ABSTRACT-CONNECT: groups=FD,SOCKET,RETRY,UNIX ABSTRACT-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RETRY,UNIX ABSTRACT-RECV: groups=FD,SOCKET,RETRY,UNIX ABSTRACT-RECVFROM: groups=FD,SOCKET,CHILD,RETRY,UNIX ABSTRACT-SENDTO: groups=FD,SOCKET,RETRY,UNIX ACCEPT-FD: groups=FD,SOCKET,CHILD,RETRY,RANGE,UNIX,IP4,IP6,UDP,TCP,SCTP,DCCP,UDPLITE CREATE: groups=FD,REG,NAMED DCCP-CONNECT:: groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,DCCP DCCP-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,IP6,DCCP DCCP4-CONNECT:: groups=FD,SOCKET,CHILD,RETRY,IP4,DCCP DCCP4-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,DCCP DCCP6-CONNECT:: groups=FD,SOCKET,CHILD,RETRY,IP6,DCCP DCCP6-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP6,DCCP EXEC: groups=FD,FIFO,SOCKET,EXEC,FORK,TERMIOS,PTY,PARENT,UNIX FD: groups=FD,FIFO,CHR,BLK,REG,SOCKET,TERMIOS,UNIX,IP4,IP6,UDP,TCP,SCTP,DCCP,UDPLITE GOPEN: groups=FD,FIFO,CHR,BLK,REG,SOCKET,NAMED,OPEN,TERMIOS,UNIX INTERFACE: groups=FD,SOCKET,INTERFACE IP-DATAGRAM:: groups=FD,SOCKET,RANGE,IP4,IP6 IP-RECV: groups=FD,SOCKET,RANGE,IP4,IP6 IP-RECVFROM: groups=FD,SOCKET,CHILD,RANGE,IP4,IP6 IP-SENDTO:: groups=FD,SOCKET,IP4,IP6 IP4-DATAGRAM:: groups=FD,SOCKET,RANGE,IP4 IP4-RECV: groups=FD,SOCKET,RANGE,IP4 IP4-RECVFROM: groups=FD,SOCKET,CHILD,RANGE,IP4 IP4-SENDTO:: groups=FD,SOCKET,IP4 IP6-DATAGRAM:: groups=FD,SOCKET,RANGE,IP6 IP6-RECV: groups=FD,SOCKET,RANGE,IP6 IP6-RECVFROM: groups=FD,SOCKET,CHILD,RANGE,IP6 IP6-SENDTO:: groups=FD,SOCKET,IP6 OPEN: groups=FD,FIFO,CHR,BLK,REG,NAMED,OPEN,TERMIOS OPENSSL:: groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,TCP,OPENSSL OPENSSL-DTLS-CLIENT:: groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,UDP,OPENSSL OPENSSL-DTLS-SERVER: groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,IP6,UDP,OPENSSL OPENSSL-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,IP6,TCP,OPENSSL PIPE[:] groups=FD,FIFO,NAMED,OPEN POSIXMQ-BIDIRECTIONAL: groups=FD,NAMED,OPEN,RETRY,POSIXMQ POSIXMQ-READ: groups=FD,NAMED,OPEN,RETRY,POSIXMQ POSIXMQ-RECEIVE: groups=FD,NAMED,OPEN,CHILD,RETRY,POSIXMQ POSIXMQ-SEND: groups=FD,NAMED,OPEN,CHILD,RETRY,POSIXMQ POSIXMQ-WRITE: groups=FD,NAMED,OPEN,CHILD,RETRY,POSIXMQ PROXY::: groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,TCP,HTTP PTY groups=FD,NAMED,TERMIOS,PTY READLINE groups=FD,READLINE,TERMIOS SCTP-CONNECT:: groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,SCTP SCTP-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,IP6,SCTP SCTP4-CONNECT:: groups=FD,SOCKET,CHILD,RETRY,IP4,SCTP SCTP4-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,SCTP SCTP6-CONNECT:: groups=FD,SOCKET,CHILD,RETRY,IP6,SCTP SCTP6-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP6,SCTP SHELL[:] groups=FD,FIFO,SOCKET,EXEC,FORK,SHELL,TERMIOS,PTY,PARENT,UNIX SOCKET-CONNECT::: groups=FD,SOCKET,CHILD,RETRY SOCKET-DATAGRAM:::: groups=FD,SOCKET,RANGE SOCKET-LISTEN::: groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE SOCKET-RECV:::: groups=FD,SOCKET,RANGE SOCKET-RECVFROM:::: groups=FD,SOCKET,CHILD,RANGE SOCKET-SENDTO:::: groups=FD,SOCKET SOCKETPAIR: groups=FD,SOCKET SOCKS4::: groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,TCP,SOCKS SOCKS4A::: groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,TCP,SOCKS SOCKS5-CONNECT:[:]:: groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,TCP,SOCKS SOCKS5-LISTEN:[:]:: groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,TCP,SOCKS STALL groups=FD,FIFO STDERR groups=FD,FIFO,CHR,BLK,REG,SOCKET,TERMIOS,UNIX,IP4,IP6,UDP,TCP,SCTP,DCCP,UDPLITE STDIN groups=FD,FIFO,CHR,BLK,REG,SOCKET,TERMIOS,UNIX,IP4,IP6,UDP,TCP,SCTP,DCCP,UDPLITE STDIO groups=FD,FIFO,CHR,BLK,REG,SOCKET,TERMIOS,UNIX,IP4,IP6,UDP,TCP,SCTP,DCCP,UDPLITE STDOUT groups=FD,FIFO,CHR,BLK,REG,SOCKET,TERMIOS,UNIX,IP4,IP6,UDP,TCP,SCTP,DCCP,UDPLITE SYSTEM: groups=FD,FIFO,SOCKET,EXEC,FORK,TERMIOS,PTY,PARENT,UNIX TCP-CONNECT:: groups=FD,SOCKET,CHILD,RETRY,IP4,IP6,TCP TCP-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,IP6,TCP TCP4-CONNECT:: groups=FD,SOCKET,CHILD,RETRY,IP4,TCP TCP4-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP4,TCP TCP6-CONNECT:: groups=FD,SOCKET,CHILD,RETRY,IP6,TCP TCP6-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RETRY,RANGE,IP6,TCP TEXT: groups=FD,FIFO TUN[:/] groups=FD,CHR,OPEN,INTERFACE UDP-CONNECT:: groups=FD,SOCKET,IP4,IP6,UDP UDP-DATAGRAM:: groups=FD,SOCKET,RANGE,IP4,IP6,UDP UDP-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6,UDP UDP-RECV: groups=FD,SOCKET,RANGE,IP4,IP6,UDP UDP-RECVFROM: groups=FD,SOCKET,CHILD,RANGE,IP4,IP6,UDP UDP-SENDTO:: groups=FD,SOCKET,IP4,IP6,UDP UDP4-CONNECT:: groups=FD,SOCKET,IP4,UDP UDP4-DATAGRAM:: groups=FD,SOCKET,RANGE,IP4,UDP UDP4-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RANGE,IP4,UDP UDP4-RECV: groups=FD,SOCKET,RANGE,IP4,UDP UDP4-RECVFROM: groups=FD,SOCKET,CHILD,RANGE,IP4,UDP UDP4-SENDTO:: groups=FD,SOCKET,IP4,UDP UDP6-CONNECT:: groups=FD,SOCKET,IP6,UDP UDP6-DATAGRAM:: groups=FD,SOCKET,RANGE,IP6,UDP UDP6-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RANGE,IP6,UDP UDP6-RECV: groups=FD,SOCKET,RANGE,IP6,UDP UDP6-RECVFROM: groups=FD,SOCKET,CHILD,RANGE,IP6,UDP UDP6-SENDTO:: groups=FD,SOCKET,IP6,UDP UDPLITE-CONNECT:: groups=FD,SOCKET,IP4,IP6,UDP,UDPLITE UDPLITE-DATAGRAM:: groups=FD,SOCKET,RANGE,IP4,IP6,UDP,UDPLITE UDPLITE-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6,UDP,UDPLITE UDPLITE-RECV: groups=FD,SOCKET,RANGE,IP4,IP6,UDP,UDPLITE UDPLITE-RECVFROM: groups=FD,SOCKET,CHILD,RANGE,IP4,IP6,UDP,UDPLITE UDPLITE-SENDTO:: groups=FD,SOCKET,IP4,IP6,UDP,UDPLITE UDPLITE4-CONNECT:: groups=FD,SOCKET,IP4,UDP,UDPLITE UDPLITE4-DATAGRAM:: groups=FD,SOCKET,RANGE,IP4,UDP,UDPLITE UDPLITE4-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RANGE,IP4,UDP,UDPLITE UDPLITE4-RECV: groups=FD,SOCKET,RANGE,IP4,UDP,UDPLITE UDPLITE4-RECVFROM:: groups=FD,SOCKET,CHILD,RANGE,IP4,UDP,UDPLITE UDPLITE4-SENDTO:: groups=FD,SOCKET,IP4,UDP,UDPLITE UDPLITE6-CONNECT:: groups=FD,SOCKET,IP6,UDP,UDPLITE UDPLITE6-DATAGRAM:: groups=FD,SOCKET,RANGE,IP6,UDP,UDPLITE UDPLITE6-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RANGE,IP6,UDP,UDPLITE UDPLITE6-RECV: groups=FD,SOCKET,RANGE,IP6,UDP,UDPLITE UDPLITE6-RECVFROM: groups=FD,SOCKET,CHILD,RANGE,IP6,UDP,UDPLITE UDPLITE6-SENDTO:: groups=FD,SOCKET,IP6,UDP,UDPLITE UNIX-CLIENT: groups=FD,SOCKET,NAMED,RETRY,UNIX UNIX-CONNECT: groups=FD,SOCKET,NAMED,RETRY,UNIX UNIX-LISTEN: groups=FD,SOCKET,NAMED,LISTEN,CHILD,RETRY,UNIX UNIX-RECV: groups=FD,SOCKET,NAMED,RETRY,UNIX UNIX-RECVFROM: groups=FD,SOCKET,NAMED,CHILD,RETRY,UNIX UNIX-SENDTO: groups=FD,SOCKET,NAMED,RETRY,UNIX VSOCK-CONNECT:: groups=FD,SOCKET,CHILD,RETRY VSOCK-LISTEN: groups=FD,SOCKET,LISTEN,CHILD,RETRY