tcp: add init_cookie_seq method to tcp_request_sock_ops
Move the specific IPv4/IPv6 cookie sequence initialization to a new method in tcp_request_sock_ops in preparation for unifying tcp_v4_conn_request and tcp_v6_conn_request. Signed-off-by: Octavian Purdila <octavian.purdila@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
16bea70aa7
commit
fb7b37a7f3
@ -495,13 +495,6 @@ u32 __cookie_v4_init_sequence(const struct iphdr *iph, const struct tcphdr *th,
|
|||||||
u16 *mssp);
|
u16 *mssp);
|
||||||
__u32 cookie_v4_init_sequence(struct sock *sk, const struct sk_buff *skb,
|
__u32 cookie_v4_init_sequence(struct sock *sk, const struct sk_buff *skb,
|
||||||
__u16 *mss);
|
__u16 *mss);
|
||||||
#else
|
|
||||||
static inline __u32 cookie_v4_init_sequence(struct sock *sk,
|
|
||||||
const struct sk_buff *skb,
|
|
||||||
__u16 *mss)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__u32 cookie_init_timestamp(struct request_sock *req);
|
__u32 cookie_init_timestamp(struct request_sock *req);
|
||||||
@ -517,13 +510,6 @@ u32 __cookie_v6_init_sequence(const struct ipv6hdr *iph,
|
|||||||
const struct tcphdr *th, u16 *mssp);
|
const struct tcphdr *th, u16 *mssp);
|
||||||
__u32 cookie_v6_init_sequence(struct sock *sk, const struct sk_buff *skb,
|
__u32 cookie_v6_init_sequence(struct sock *sk, const struct sk_buff *skb,
|
||||||
__u16 *mss);
|
__u16 *mss);
|
||||||
#else
|
|
||||||
static inline __u32 cookie_v6_init_sequence(struct sock *sk,
|
|
||||||
struct sk_buff *skb,
|
|
||||||
__u16 *mss)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
/* tcp_output.c */
|
/* tcp_output.c */
|
||||||
|
|
||||||
@ -1615,8 +1601,28 @@ struct tcp_request_sock_ops {
|
|||||||
#endif
|
#endif
|
||||||
void (*init_req)(struct request_sock *req, struct sock *sk,
|
void (*init_req)(struct request_sock *req, struct sock *sk,
|
||||||
struct sk_buff *skb);
|
struct sk_buff *skb);
|
||||||
|
#ifdef CONFIG_SYN_COOKIES
|
||||||
|
__u32 (*cookie_init_seq)(struct sock *sk, const struct sk_buff *skb,
|
||||||
|
__u16 *mss);
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYN_COOKIES
|
||||||
|
static inline __u32 cookie_init_sequence(const struct tcp_request_sock_ops *ops,
|
||||||
|
struct sock *sk, struct sk_buff *skb,
|
||||||
|
__u16 *mss)
|
||||||
|
{
|
||||||
|
return ops->cookie_init_seq(sk, skb, mss);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline __u32 cookie_init_sequence(const struct tcp_request_sock_ops *ops,
|
||||||
|
struct sock *sk, struct sk_buff *skb,
|
||||||
|
__u16 *mss)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int tcpv4_offload_init(void);
|
int tcpv4_offload_init(void);
|
||||||
|
|
||||||
void tcp_v4_init(void);
|
void tcp_v4_init(void);
|
||||||
|
@ -1264,6 +1264,9 @@ static const struct tcp_request_sock_ops tcp_request_sock_ipv4_ops = {
|
|||||||
.calc_md5_hash = tcp_v4_md5_hash_skb,
|
.calc_md5_hash = tcp_v4_md5_hash_skb,
|
||||||
#endif
|
#endif
|
||||||
.init_req = tcp_v4_init_req,
|
.init_req = tcp_v4_init_req,
|
||||||
|
#ifdef CONFIG_SYN_COOKIES
|
||||||
|
.cookie_init_seq = cookie_v4_init_sequence,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
|
int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
|
||||||
@ -1331,7 +1334,7 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
|
|||||||
TCP_ECN_create_request(req, skb, sock_net(sk));
|
TCP_ECN_create_request(req, skb, sock_net(sk));
|
||||||
|
|
||||||
if (want_cookie) {
|
if (want_cookie) {
|
||||||
isn = cookie_v4_init_sequence(sk, skb, &req->mss);
|
isn = cookie_init_sequence(af_ops, sk, skb, &req->mss);
|
||||||
req->cookie_ts = tmp_opt.tstamp_ok;
|
req->cookie_ts = tmp_opt.tstamp_ok;
|
||||||
} else if (!isn) {
|
} else if (!isn) {
|
||||||
/* VJ's idea. We save last timestamp seen
|
/* VJ's idea. We save last timestamp seen
|
||||||
|
@ -761,6 +761,9 @@ static const struct tcp_request_sock_ops tcp_request_sock_ipv6_ops = {
|
|||||||
.calc_md5_hash = tcp_v6_md5_hash_skb,
|
.calc_md5_hash = tcp_v6_md5_hash_skb,
|
||||||
#endif
|
#endif
|
||||||
.init_req = tcp_v6_init_req,
|
.init_req = tcp_v6_init_req,
|
||||||
|
#ifdef CONFIG_SYN_COOKIES
|
||||||
|
.cookie_init_seq = cookie_v6_init_sequence,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win,
|
static void tcp_v6_send_response(struct sk_buff *skb, u32 seq, u32 ack, u32 win,
|
||||||
@ -1061,7 +1064,7 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
|
|||||||
|
|
||||||
if (!isn) {
|
if (!isn) {
|
||||||
if (want_cookie) {
|
if (want_cookie) {
|
||||||
isn = cookie_v6_init_sequence(sk, skb, &req->mss);
|
isn = cookie_init_sequence(af_ops, sk, skb, &req->mss);
|
||||||
req->cookie_ts = tmp_opt.tstamp_ok;
|
req->cookie_ts = tmp_opt.tstamp_ok;
|
||||||
goto have_isn;
|
goto have_isn;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user