TCPCT part 1g: Responder Cookie => Initiator
Parse incoming TCP_COOKIE option(s). Calculate <SYN,ACK> TCP_COOKIE option. Send optional <SYN,ACK> data. This is a significantly revised implementation of an earlier (year-old) patch that no longer applies cleanly, with permission of the original author (Adam Langley): http://thread.gmane.org/gmane.linux.network/102586 Requires: TCPCT part 1a: add request_values parameter for sending SYNACK TCPCT part 1b: generate Responder Cookie secret TCPCT part 1c: sysctl_tcp_cookie_size, socket option TCP_COOKIE_TRANSACTIONS TCPCT part 1d: define TCP cookie option, extend existing struct's TCPCT part 1e: implement socket option TCP_COOKIE_TRANSACTIONS TCPCT part 1f: Initiator Cookie => Responder Signed-off-by: William.Allen.Simpson@gmail.com Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
bd0388ae77
commit
4957faade1
@@ -253,6 +253,8 @@ EXPORT_SYMBOL(cookie_check_timestamp);
|
||||
struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
|
||||
struct ip_options *opt)
|
||||
{
|
||||
struct tcp_options_received tcp_opt;
|
||||
u8 *hash_location;
|
||||
struct inet_request_sock *ireq;
|
||||
struct tcp_request_sock *treq;
|
||||
struct tcp_sock *tp = tcp_sk(sk);
|
||||
@@ -263,7 +265,6 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
|
||||
int mss;
|
||||
struct rtable *rt;
|
||||
__u8 rcv_wscale;
|
||||
struct tcp_options_received tcp_opt;
|
||||
|
||||
if (!sysctl_tcp_syncookies || !th->ack)
|
||||
goto out;
|
||||
@@ -341,7 +342,7 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
|
||||
|
||||
/* check for timestamp cookie support */
|
||||
memset(&tcp_opt, 0, sizeof(tcp_opt));
|
||||
tcp_parse_options(skb, &tcp_opt, 0, &rt->u.dst);
|
||||
tcp_parse_options(skb, &tcp_opt, &hash_location, 0, &rt->u.dst);
|
||||
|
||||
if (tcp_opt.saw_tstamp)
|
||||
cookie_check_timestamp(&tcp_opt);
|
||||
|
Reference in New Issue
Block a user