#define pr_fmt(fmt) …
#include <linux/kernel.h>
#include <crypto/sha2.h>
#include <net/tcp.h>
#include <net/mptcp.h>
#include "protocol.h"
#include "mib.h"
#include <trace/events/mptcp.h>
static bool mptcp_cap_flag_sha256(u8 flags)
{ … }
static void mptcp_parse_option(const struct sk_buff *skb,
const unsigned char *ptr, int opsize,
struct mptcp_options_received *mp_opt)
{ … }
void mptcp_get_options(const struct sk_buff *skb,
struct mptcp_options_received *mp_opt)
{ … }
bool mptcp_syn_options(struct sock *sk, const struct sk_buff *skb,
unsigned int *size, struct mptcp_out_options *opts)
{ … }
static void clear_3rdack_retransmission(struct sock *sk)
{ … }
static bool mptcp_established_options_mp(struct sock *sk, struct sk_buff *skb,
bool snd_data_fin_enable,
unsigned int *size,
struct mptcp_out_options *opts)
{ … }
static void mptcp_write_data_fin(struct mptcp_subflow_context *subflow,
struct sk_buff *skb, struct mptcp_ext *ext)
{ … }
static bool mptcp_established_options_dss(struct sock *sk, struct sk_buff *skb,
bool snd_data_fin_enable,
unsigned int *size,
struct mptcp_out_options *opts)
{ … }
static u64 add_addr_generate_hmac(u64 key1, u64 key2,
struct mptcp_addr_info *addr)
{ … }
static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff *skb,
unsigned int *size,
unsigned int remaining,
struct mptcp_out_options *opts)
{ … }
static bool mptcp_established_options_rm_addr(struct sock *sk,
unsigned int *size,
unsigned int remaining,
struct mptcp_out_options *opts)
{ … }
static bool mptcp_established_options_mp_prio(struct sock *sk,
unsigned int *size,
unsigned int remaining,
struct mptcp_out_options *opts)
{ … }
static noinline bool mptcp_established_options_rst(struct sock *sk, struct sk_buff *skb,
unsigned int *size,
unsigned int remaining,
struct mptcp_out_options *opts)
{ … }
static bool mptcp_established_options_fastclose(struct sock *sk,
unsigned int *size,
unsigned int remaining,
struct mptcp_out_options *opts)
{ … }
static bool mptcp_established_options_mp_fail(struct sock *sk,
unsigned int *size,
unsigned int remaining,
struct mptcp_out_options *opts)
{ … }
bool mptcp_established_options(struct sock *sk, struct sk_buff *skb,
unsigned int *size, unsigned int remaining,
struct mptcp_out_options *opts)
{ … }
bool mptcp_synack_options(const struct request_sock *req, unsigned int *size,
struct mptcp_out_options *opts)
{ … }
static bool check_fully_established(struct mptcp_sock *msk, struct sock *ssk,
struct mptcp_subflow_context *subflow,
struct sk_buff *skb,
struct mptcp_options_received *mp_opt)
{ … }
u64 __mptcp_expand_seq(u64 old_seq, u64 cur_seq)
{ … }
static void __mptcp_snd_una_update(struct mptcp_sock *msk, u64 new_snd_una)
{ … }
static void ack_update_msk(struct mptcp_sock *msk,
struct sock *ssk,
struct mptcp_options_received *mp_opt)
{ … }
bool mptcp_update_rcv_data_fin(struct mptcp_sock *msk, u64 data_fin_seq, bool use_64bit)
{ … }
static bool add_addr_hmac_valid(struct mptcp_sock *msk,
struct mptcp_options_received *mp_opt)
{ … }
bool mptcp_incoming_options(struct sock *sk, struct sk_buff *skb)
{ … }
static void mptcp_set_rwin(struct tcp_sock *tp, struct tcphdr *th)
{ … }
__sum16 __mptcp_make_csum(u64 data_seq, u32 subflow_seq, u16 data_len, __wsum sum)
{ … }
static __sum16 mptcp_make_csum(const struct mptcp_ext *mpext)
{ … }
static void put_len_csum(u16 len, __sum16 csum, void *data)
{ … }
void mptcp_write_options(struct tcphdr *th, __be32 *ptr, struct tcp_sock *tp,
struct mptcp_out_options *opts)
{ … }
__be32 mptcp_get_reset_option(const struct sk_buff *skb)
{ … }
EXPORT_SYMBOL_GPL(…);