net/tcp: Wire TCP-AO to request sockets
Now when the new request socket is created from the listening socket, it's recorded what MKT was used by the peer. tcp_rsk_used_ao() is a new helper for checking if TCP-AO option was used to create the request socket. tcp_ao_copy_all_matching() will copy all keys that match the peer on the request socket, as well as preparing them for the usage (creating traffic keys). Co-developed-by: Francesco Ruggeri <fruggeri@arista.com> Signed-off-by: Francesco Ruggeri <fruggeri@arista.com> Co-developed-by: Salam Noureddine <noureddine@arista.com> Signed-off-by: Salam Noureddine <noureddine@arista.com> Signed-off-by: Dmitry Safonov <dima@arista.com> Acked-by: David Ahern <dsahern@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
decde2586b
commit
06b22ef295
@ -506,6 +506,9 @@ struct sock *tcp_create_openreq_child(const struct sock *sk,
|
||||
const struct tcp_sock *oldtp;
|
||||
struct tcp_sock *newtp;
|
||||
u32 seq;
|
||||
#ifdef CONFIG_TCP_AO
|
||||
struct tcp_ao_key *ao_key;
|
||||
#endif
|
||||
|
||||
if (!newsk)
|
||||
return NULL;
|
||||
@ -594,6 +597,13 @@ struct sock *tcp_create_openreq_child(const struct sock *sk,
|
||||
#ifdef CONFIG_TCP_MD5SIG
|
||||
newtp->md5sig_info = NULL; /*XXX*/
|
||||
#endif
|
||||
#ifdef CONFIG_TCP_AO
|
||||
newtp->ao_info = NULL;
|
||||
ao_key = treq->af_specific->ao_lookup(sk, req,
|
||||
tcp_rsk(req)->ao_keyid, -1);
|
||||
if (ao_key)
|
||||
newtp->tcp_header_len += tcp_ao_len(ao_key);
|
||||
#endif
|
||||
if (skb->len >= TCP_MSS_DEFAULT + newtp->tcp_header_len)
|
||||
newicsk->icsk_ack.last_seg_size = skb->len - newtp->tcp_header_len;
|
||||
newtp->rx_opt.mss_clamp = req->mss;
|
||||
|
Reference in New Issue
Block a user