mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 07:12:09 +00:00
tcp: md5: add an address prefix for key lookup
This allows the keys used for TCP MD5 signature to be used for whole range of addresses, specified with a prefix length, instead of only one address as it currently is. Signed-off-by: Bob Gilligan <gilligan@arista.com> Signed-off-by: Eric Mowat <mowat@arista.com> Signed-off-by: Ivan Delalande <colona@arista.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
910603818c
commit
6797318e62
3 changed files with 70 additions and 16 deletions
|
@ -533,9 +533,9 @@ static int tcp_v6_parse_md5_keys(struct sock *sk, char __user *optval,
|
|||
if (!cmd.tcpm_keylen) {
|
||||
if (ipv6_addr_v4mapped(&sin6->sin6_addr))
|
||||
return tcp_md5_do_del(sk, (union tcp_md5_addr *)&sin6->sin6_addr.s6_addr32[3],
|
||||
AF_INET);
|
||||
AF_INET, 32);
|
||||
return tcp_md5_do_del(sk, (union tcp_md5_addr *)&sin6->sin6_addr,
|
||||
AF_INET6);
|
||||
AF_INET6, 128);
|
||||
}
|
||||
|
||||
if (cmd.tcpm_keylen > TCP_MD5SIG_MAXKEYLEN)
|
||||
|
@ -543,10 +543,12 @@ static int tcp_v6_parse_md5_keys(struct sock *sk, char __user *optval,
|
|||
|
||||
if (ipv6_addr_v4mapped(&sin6->sin6_addr))
|
||||
return tcp_md5_do_add(sk, (union tcp_md5_addr *)&sin6->sin6_addr.s6_addr32[3],
|
||||
AF_INET, cmd.tcpm_key, cmd.tcpm_keylen, GFP_KERNEL);
|
||||
AF_INET, 32, cmd.tcpm_key,
|
||||
cmd.tcpm_keylen, GFP_KERNEL);
|
||||
|
||||
return tcp_md5_do_add(sk, (union tcp_md5_addr *)&sin6->sin6_addr,
|
||||
AF_INET6, cmd.tcpm_key, cmd.tcpm_keylen, GFP_KERNEL);
|
||||
AF_INET6, 128, cmd.tcpm_key, cmd.tcpm_keylen,
|
||||
GFP_KERNEL);
|
||||
}
|
||||
|
||||
static int tcp_v6_md5_hash_headers(struct tcp_md5sig_pool *hp,
|
||||
|
@ -1186,7 +1188,7 @@ static struct sock *tcp_v6_syn_recv_sock(const struct sock *sk, struct sk_buff *
|
|||
* across. Shucks.
|
||||
*/
|
||||
tcp_md5_do_add(newsk, (union tcp_md5_addr *)&newsk->sk_v6_daddr,
|
||||
AF_INET6, key->key, key->keylen,
|
||||
AF_INET6, 128, key->key, key->keylen,
|
||||
sk_gfp_mask(sk, GFP_ATOMIC));
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue