1 /* source: xio-tcp.c */
2 /* Copyright Gerhard Rieger and contributors (see file CHANGES) */
3 /* Published under the GNU General Public License V.2, see file COPYING */
5 /* this file contains the source for TCP related functions and options */
7 #include "xiosysincludes.h"
12 #include "xio-listen.h"
14 #include "xio-ipapp.h"
17 /****** TCP addresses ******/
19 #if WITH_IP4 || WITH_IP6
20 const struct addrdesc addr_tcp_connect
= { "tcp-connect", 1+XIO_RDWR
, xioopen_ipapp_connect
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_SOCK_IP6
|GROUP_IP_TCP
|GROUP_CHILD
|GROUP_RETRY
, SOCK_STREAM
, IPPROTO_TCP
, PF_UNSPEC
HELP(":<host>:<port>") };
22 const struct addrdesc addr_tcp_listen
= { "tcp-listen", 1+XIO_RDWR
, xioopen_ipapp_listen
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_SOCK_IP6
|GROUP_IP_TCP
|GROUP_LISTEN
|GROUP_CHILD
|GROUP_RANGE
|GROUP_RETRY
, SOCK_STREAM
, IPPROTO_TCP
, PF_UNSPEC
HELP(":<port>") };
27 const struct addrdesc addr_tcp4_connect
= { "tcp4-connect", 1+XIO_RDWR
, xioopen_ipapp_connect
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_IP_TCP
|GROUP_CHILD
|GROUP_RETRY
, SOCK_STREAM
, IPPROTO_TCP
, PF_INET
HELP(":<host>:<port>") };
29 const struct addrdesc addr_tcp4_listen
= { "tcp4-listen", 1+XIO_RDWR
, xioopen_ipapp_listen
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP4
|GROUP_IP_TCP
|GROUP_LISTEN
|GROUP_CHILD
|GROUP_RANGE
|GROUP_RETRY
, SOCK_STREAM
, IPPROTO_TCP
, PF_INET
HELP(":<port>") };
34 const struct addrdesc addr_tcp6_connect
= { "tcp6-connect", 1+XIO_RDWR
, xioopen_ipapp_connect
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP6
|GROUP_IP_TCP
|GROUP_CHILD
|GROUP_RETRY
, SOCK_STREAM
, IPPROTO_TCP
, PF_INET6
HELP(":<host>:<port>") };
36 const struct addrdesc addr_tcp6_listen
= { "tcp6-listen", 1+XIO_RDWR
, xioopen_ipapp_listen
, GROUP_FD
|GROUP_SOCKET
|GROUP_SOCK_IP6
|GROUP_IP_TCP
|GROUP_LISTEN
|GROUP_CHILD
|GROUP_RANGE
|GROUP_RETRY
, SOCK_STREAM
, IPPROTO_TCP
, PF_INET6
HELP(":<port>") };
40 /****** TCP address options ******/
43 const struct optdesc opt_tcp_nodelay
= { "tcp-nodelay", "nodelay", OPT_TCP_NODELAY
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_NODELAY
};
46 const struct optdesc opt_tcp_maxseg
= { "tcp-maxseg", "mss", OPT_TCP_MAXSEG
, GROUP_IP_TCP
, PH_PASTSOCKET
,TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_MAXSEG
};
47 const struct optdesc opt_tcp_maxseg_late
={"tcp-maxseg-late","mss-late",OPT_TCP_MAXSEG_LATE
,GROUP_IP_TCP
,PH_CONNECTED
,TYPE_INT
,OFUNC_SOCKOPT
, SOL_TCP
, TCP_MAXSEG
};
50 const struct optdesc opt_tcp_cork
= { "tcp-cork", "cork", OPT_TCP_CORK
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_CORK
};
53 const struct optdesc opt_tcp_stdurg
= { "tcp-stdurg", "stdurg", OPT_TCP_STDURG
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_STDURG
};
56 const struct optdesc opt_tcp_rfc1323
= { "tcp-rfc1323", "rfc1323", OPT_TCP_RFC1323
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_RFC1323
};
59 const struct optdesc opt_tcp_keepidle
={ "tcp-keepidle", "keepidle",OPT_TCP_KEEPIDLE
,GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
,TCP_KEEPIDLE
};
62 const struct optdesc opt_tcp_keepintvl
={"tcp-keepintvl","keepintvl",OPT_TCP_KEEPINTVL
,GROUP_IP_TCP
,PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
,TCP_KEEPINTVL
};
65 const struct optdesc opt_tcp_keepcnt
= { "tcp-keepcnt", "keepcnt", OPT_TCP_KEEPCNT
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_KEEPCNT
};
68 const struct optdesc opt_tcp_syncnt
= { "tcp-syncnt", "syncnt", OPT_TCP_SYNCNT
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_SYNCNT
};
71 const struct optdesc opt_tcp_linger2
= { "tcp-linger2", "linger2", OPT_TCP_LINGER2
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_LINGER2
};
73 #ifdef TCP_DEFER_ACCEPT
74 const struct optdesc opt_tcp_defer_accept
={"tcp-defer-accept","defer-accept",OPT_TCP_DEFER_ACCEPT
,GROUP_IP_TCP
,PH_PASTSOCKET
,TYPE_INT
,OFUNC_SOCKOPT
,SOL_TCP
,TCP_DEFER_ACCEPT
};
76 #ifdef TCP_WINDOW_CLAMP
77 const struct optdesc opt_tcp_window_clamp
={"tcp-window-clamp","window-clamp",OPT_TCP_WINDOW_CLAMP
,GROUP_IP_TCP
,PH_PASTSOCKET
,TYPE_INT
,OFUNC_SOCKOPT
,SOL_TCP
,TCP_WINDOW_CLAMP
};
80 const struct optdesc opt_tcp_info
= { "tcp-info", "info", OPT_TCP_INFO
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_INFO
};
83 const struct optdesc opt_tcp_quickack
= { "tcp-quickack", "quickack", OPT_TCP_QUICKACK
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_QUICKACK
};
86 const struct optdesc opt_tcp_noopt
= { "tcp-noopt", "noopt", OPT_TCP_NOOPT
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_NOOPT
};
89 const struct optdesc opt_tcp_nopush
= { "tcp-nopush", "nopush", OPT_TCP_NOPUSH
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_NOPUSH
};
92 const struct optdesc opt_tcp_md5sig
= { "tcp-md5sig", "md5sig", OPT_TCP_MD5SIG
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_MD5SIG
};
94 #ifdef TCP_SACK_DISABLE
95 const struct optdesc opt_tcp_sack_disable
= { "tcp-sack-disable", "sack-disable", OPT_TCP_SACK_DISABLE
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_SACK_DISABLE
};
97 #ifdef TCP_SIGNATURE_ENABLE
98 const struct optdesc opt_tcp_signature_enable
= { "tcp-signature-enable", "signature-enable", OPT_TCP_SIGNATURE_ENABLE
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_SIGNATURE_ENABLE
};
100 #ifdef TCP_ABORT_THRESHOLD /* HP-UX */
101 const struct optdesc opt_tcp_abort_threshold
= { "tcp-abort-threshold", "abort-threshold", OPT_TCP_ABORT_THRESHOLD
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_ABORT_THRESHOLD
};
103 #ifdef TCP_CONN_ABORT_THRESHOLD /* HP-UX */
104 const struct optdesc opt_tcp_conn_abort_threshold
= { "tcp-conn-abort-threshold", "conn-abort-threshold", OPT_TCP_CONN_ABORT_THRESHOLD
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_CONN_ABORT_THRESHOLD
};
106 #ifdef TCP_KEEPINIT /* OSF1 aka Tru64 */
107 const struct optdesc opt_tcp_keepinit
= { "tcp-keepinit", "keepinit", OPT_TCP_KEEPINIT
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_KEEPINIT
};
109 #ifdef TCP_PAWS /* OSF1 aka Tru64 */
110 const struct optdesc opt_tcp_paws
= { "tcp-paws", "paws", OPT_TCP_PAWS
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_PAWS
};
112 #ifdef TCP_SACKENA /* OSF1 aka Tru64 */
113 const struct optdesc opt_tcp_sackena
= { "tcp-sackena", "sackena", OPT_TCP_SACKENA
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_SACKENA
};
115 #ifdef TCP_TSOPTENA /* OSF1 aka Tru64 */
116 const struct optdesc opt_tcp_tsoptena
= { "tcp-tsoptena", "tsoptena", OPT_TCP_TSOPTENA
, GROUP_IP_TCP
, PH_PASTSOCKET
, TYPE_INT
, OFUNC_SOCKOPT
, SOL_TCP
, TCP_TSOPTENA
};
119 #endif /* WITH_TCP */