diff options
| author | Andrey Konovalov <andreyknvl@google.com> | 2017-04-07 19:22:56 +0200 |
|---|---|---|
| committer | Andrey Konovalov <andreyknvl@google.com> | 2017-04-08 20:20:38 +0200 |
| commit | 941170a7e2ba713853d9b63b259a00bd634518fc (patch) | |
| tree | 808b8febbdaed8e3c9fecbb0b0f3e294225d25eb /sys | |
| parent | 822b1269b30114d4bec447845fc71afca97c5b63 (diff) | |
sys: add more tcp socket options
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/socket_inet_tcp.txt | 49 | ||||
| -rw-r--r-- | sys/socket_inet_tcp_amd64.const | 5 | ||||
| -rw-r--r-- | sys/socket_inet_tcp_arm64.const | 5 | ||||
| -rw-r--r-- | sys/socket_inet_tcp_ppc64le.const | 5 |
4 files changed, 64 insertions, 0 deletions
diff --git a/sys/socket_inet_tcp.txt b/sys/socket_inet_tcp.txt index 4626511ad..124151fd8 100644 --- a/sys/socket_inet_tcp.txt +++ b/sys/socket_inet_tcp.txt @@ -5,6 +5,7 @@ include <asm/ioctls.h> include <linux/tcp.h> +include <net/tcp.h> include <uapi/linux/sockios.h> resource sock_tcp[sock_in] @@ -43,6 +44,54 @@ setsockopt$inet_tcp_buf(fd sock_tcp, level const[IPPROTO_TCP], optname flags[tcp getsockopt$inet6_tcp_buf(fd sock_tcp6, level const[IPPROTO_TCP], optname flags[tcp_option_types_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]]) setsockopt$inet6_tcp_buf(fd sock_tcp6, level const[IPPROTO_TCP], optname flags[tcp_option_types_buf], optval buffer[in], optlen len[optval]) +# Specific TCP socket options + +# TODO: use TCP_SAVED_SYN to extract sequence numbers + +setsockopt$inet_tcp_TCP_CONGESTION(fd sock_tcp, level const[IPPROTO_TCP], optname const[TCP_CONGESTION], optval ptr[in, string[tcp_congestion_control_alg_names]], optlen len[optval]) +setsockopt$inet6_tcp_TCP_CONGESTION(fd sock_tcp6, level const[IPPROTO_TCP], optname const[TCP_CONGESTION], optval ptr[in, string[tcp_congestion_control_alg_names]], optlen len[optval]) + +setsockopt$inet_tcp_TCP_MD5SIG(fd sock_tcp, level const[IPPROTO_TCP], optname const[TCP_MD5SIG], optval ptr[in, tcp_md5sig], optlen len[optval]) +setsockopt$inet6_tcp_TCP_MD5SIG(fd sock_tcp6, level const[IPPROTO_TCP], optname const[TCP_MD5SIG], optval ptr[in, tcp_md5sig], optlen len[optval]) + +setsockopt$inet_tcp_TCP_REPAIR_OPTIONS(fd sock_tcp, level const[IPPROTO_TCP], optname const[TCP_REPAIR_OPTIONS], optval ptr[in, array[tcp_repair_opt]], optlen len[optval]) +setsockopt$inet6_tcp_TCP_REPAIR_OPTIONS(fd sock_tcp6, level const[IPPROTO_TCP], optname const[TCP_REPAIR_OPTIONS], optval ptr[in, array[tcp_repair_opt]], optlen len[optval]) + +getsockopt$inet_tcp_TCP_REPAIR_WINDOW(fd sock_tcp, level const[IPPROTO_TCP], optname const[TCP_REPAIR_WINDOW], optval ptr[out, tcp_repair_window], optlen ptr[inout, len[optval, int32]]) +setsockopt$inet_tcp_TCP_REPAIR_WINDOW(fd sock_tcp, level const[IPPROTO_TCP], optname const[TCP_REPAIR_WINDOW], optval ptr[in, tcp_repair_window], optlen len[optval]) +getsockopt$inet6_tcp_TCP_REPAIR_WINDOW(fd sock_tcp6, level const[IPPROTO_TCP], optname const[TCP_REPAIR_WINDOW], optval ptr[out, tcp_repair_window], optlen ptr[inout, len[optval, int32]]) +setsockopt$inet6_tcp_TCP_REPAIR_WINDOW(fd sock_tcp6, level const[IPPROTO_TCP], optname const[TCP_REPAIR_WINDOW], optval ptr[in, tcp_repair_window], optlen len[optval]) + +tcp_congestion_control_alg_names = "cubic", "reno", "bic", "cdg", "dctcp", "westwood", "highspeed", "hybla", "htcp", "vegas", "nv", "veno", "scalable", "lp", "yeah", "illinois" + +tcp_repair_window { + snd_wl1 int32 + snd_wnd int32 + max_window int32 + rcv_wnd int32 + rcv_wup int32 +} + +sockaddr_storage_tcp { + in sockaddr_storage_in + in6 sockaddr_storage_in6 +} + +tcp_md5sig { + tcpm_addr sockaddr_storage_tcp + __tcpm_pad1 int16 + tcpm_keylen int16 + __tcpm_pad2 int32 + tcpm_key array[int8, TCP_MD5SIG_MAXKEYLEN] +} + +tcp_repair_opt_codes = TCPOPT_MSS, TCPOPT_WINDOW, TCPOPT_SACK_PERM, TCPOPT_TIMESTAMP + +tcp_repair_opt { + opt_code flags[tcp_repair_opt_codes, int32] + opt_val int32 +} + # TCP ioctls # http://lxr.free-electrons.com/ident?i=tcp_ioctl diff --git a/sys/socket_inet_tcp_amd64.const b/sys/socket_inet_tcp_amd64.const index 8049cc498..f9e773af7 100644 --- a/sys/socket_inet_tcp_amd64.const +++ b/sys/socket_inet_tcp_amd64.const @@ -7,6 +7,10 @@ SIOCINQ = 21531 SIOCOUTQ = 21521 SIOCOUTQNSD = 35147 SOCK_STREAM = 1 +TCPOPT_MSS = 2 +TCPOPT_SACK_PERM = 4 +TCPOPT_TIMESTAMP = 8 +TCPOPT_WINDOW = 3 TCP_CC_INFO = 26 TCP_CONGESTION = 13 TCP_CORK = 3 @@ -19,6 +23,7 @@ TCP_KEEPINTVL = 5 TCP_LINGER2 = 8 TCP_MAXSEG = 2 TCP_MD5SIG = 14 +TCP_MD5SIG_MAXKEYLEN = 80 TCP_NODELAY = 1 TCP_NOTSENT_LOWAT = 25 TCP_QUEUE_SEQ = 21 diff --git a/sys/socket_inet_tcp_arm64.const b/sys/socket_inet_tcp_arm64.const index d15a5eae7..55aaf3703 100644 --- a/sys/socket_inet_tcp_arm64.const +++ b/sys/socket_inet_tcp_arm64.const @@ -7,6 +7,10 @@ SIOCINQ = 21531 SIOCOUTQ = 21521 SIOCOUTQNSD = 35147 SOCK_STREAM = 1 +TCPOPT_MSS = 2 +TCPOPT_SACK_PERM = 4 +TCPOPT_TIMESTAMP = 8 +TCPOPT_WINDOW = 3 TCP_CC_INFO = 26 TCP_CONGESTION = 13 TCP_CORK = 3 @@ -19,6 +23,7 @@ TCP_KEEPINTVL = 5 TCP_LINGER2 = 8 TCP_MAXSEG = 2 TCP_MD5SIG = 14 +TCP_MD5SIG_MAXKEYLEN = 80 TCP_NODELAY = 1 TCP_NOTSENT_LOWAT = 25 TCP_QUEUE_SEQ = 21 diff --git a/sys/socket_inet_tcp_ppc64le.const b/sys/socket_inet_tcp_ppc64le.const index 2a1a6be64..30cadff8b 100644 --- a/sys/socket_inet_tcp_ppc64le.const +++ b/sys/socket_inet_tcp_ppc64le.const @@ -7,6 +7,10 @@ SIOCINQ = 1074030207 SIOCOUTQ = 1074033779 SIOCOUTQNSD = 35147 SOCK_STREAM = 1 +TCPOPT_MSS = 2 +TCPOPT_SACK_PERM = 4 +TCPOPT_TIMESTAMP = 8 +TCPOPT_WINDOW = 3 TCP_CC_INFO = 26 TCP_CONGESTION = 13 TCP_CORK = 3 @@ -19,6 +23,7 @@ TCP_KEEPINTVL = 5 TCP_LINGER2 = 8 TCP_MAXSEG = 2 TCP_MD5SIG = 14 +TCP_MD5SIG_MAXKEYLEN = 80 TCP_NODELAY = 1 TCP_NOTSENT_LOWAT = 25 TCP_QUEUE_SEQ = 21 |
