| # Copyright 2018 syzkaller project authors. All rights reserved. |
| # # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. |
| |
| # TCP Extensions for Multipath Operation with Multiple Addresses |
| # https://tools.ietf.org/html/rfc6824 |
| # This is not upstream yes, constants for this descriptions were generated on the following tree: |
| # https://github.com/multipath-tcp/mptcp_net-next.git |
| # Once this is upstream we need to move this to vnet.txt |
| |
| include <net/tcp.h> |
| include <net/mptcp.h> |
| include <net/mptcp_v4.h> |
| include <net/mptcp_v6.h> |
| include <uapi/linux/tcp.h> |
| |
| tcp_mptcp_option [ |
| generic mptcp_generic_option |
| syn mptcp_syn_option |
| synack mptcp_synack_option |
| ack mptcp_ack_option |
| capable mptcp_capable_option |
| add_addr mptcp_add_addr_option |
| mp_join mptcp_mp_join_option |
| mp_fclose mptcp_mp_fclose_option |
| remove_addr mptcp_remove_addr_option |
| ] [varlen] |
| |
| mptcp_sub_types = OPTION_TYPE_SYN, OPTION_TYPE_SYNACK, OPTION_TYPE_ACK, OPTION_MP_CAPABLE, OPTION_ADD_ADDR, OPTION_MP_JOIN, OPTION_MP_FCLOSE, OPTION_REMOVE_ADDR |
| |
| mptcp_generic_option { |
| type flags[mptcp_sub_types, int8] |
| length len[parent, int8] |
| data array[int8, 0:16] |
| } [packed] |
| |
| mptcp_capable_option { |
| type const[TCPOPT_MPTCP, int8] |
| length len[parent, int8] |
| version int8:4 |
| subtype const[OPTION_MP_CAPABLE, int8:4] |
| flags int8 |
| sender int64be |
| receiver array[int64be, 0:1] |
| } [packed] |
| |
| mptcp_add_addr_option { |
| type const[TCPOPT_MPTCP, int8] |
| length len[parent, int8] |
| subtype const[OPTION_ADD_ADDR, int8:4] |
| version len[parent, int8:4] |
| addr_id int8 |
| address ipv4_addr |
| port int16be |
| mac array[int8, 0:8] |
| } [packed] |
| |
| mptcp_mp_join_option { |
| type const[TCPOPT_MPTCP, int8] |
| length len[parent, int8] |
| flags int8:4 |
| subtype const[OPTION_MP_JOIN, int8:4] |
| } [packed] |
| |
| mptcp_syn_option { |
| type const[TCPOPT_MPTCP, int8] |
| length len[parent, int8] |
| flags int8:4 |
| subtype const[OPTION_TYPE_SYN, int8:4] |
| addr_id int8 |
| token int32 |
| nonce int32 |
| } [packed] |
| |
| mptcp_synack_option { |
| type const[TCPOPT_MPTCP, int8] |
| length len[parent, int8] |
| flags int8:4 |
| subtype const[OPTION_TYPE_SYNACK, int8:4] |
| addr_id int8 |
| mac int64 |
| nonce int32 |
| } [packed] |
| |
| mptcp_ack_option { |
| type const[TCPOPT_MPTCP, int8] |
| length len[parent, int8] |
| reserved int16:12 |
| subtype const[OPTION_TYPE_ACK, int16:4] |
| mac array[int8, 0:20] |
| } [packed] |
| |
| mptcp_mp_fclose_option { |
| type const[TCPOPT_MPTCP, int8] |
| length len[parent, int8] |
| reserved int16:12 |
| subtype const[OPTION_MP_FCLOSE, int16:4] |
| key int64 |
| } [packed] |
| |
| mptcp_remove_addr_option { |
| type const[TCPOPT_MPTCP, int8] |
| length len[parent, int8] |
| reserved int8:4 |
| subtype const[OPTION_REMOVE_ADDR, int8:4] |
| addrs_id array[int8] |
| } [packed] |