mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[NETNS]: Tcp-v4 sockets per-net lookup.
Add a net argument to inet_lookup and propagate it further into lookup calls. Plus tune the __inet_check_established. The dccp and inet_diag, which use that lookup functions pass the init_net into them. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
941b1d22cc
commit
c67499c0e7
5 changed files with 58 additions and 42 deletions
|
@ -369,8 +369,8 @@ void tcp_v4_err(struct sk_buff *skb, u32 info)
|
|||
return;
|
||||
}
|
||||
|
||||
sk = inet_lookup(&tcp_hashinfo, iph->daddr, th->dest, iph->saddr,
|
||||
th->source, inet_iif(skb));
|
||||
sk = inet_lookup(skb->dev->nd_net, &tcp_hashinfo, iph->daddr, th->dest,
|
||||
iph->saddr, th->source, inet_iif(skb));
|
||||
if (!sk) {
|
||||
ICMP_INC_STATS_BH(ICMP_MIB_INERRORS);
|
||||
return;
|
||||
|
@ -1503,8 +1503,8 @@ static struct sock *tcp_v4_hnd_req(struct sock *sk, struct sk_buff *skb)
|
|||
if (req)
|
||||
return tcp_check_req(sk, skb, req, prev);
|
||||
|
||||
nsk = inet_lookup_established(&tcp_hashinfo, iph->saddr, th->source,
|
||||
iph->daddr, th->dest, inet_iif(skb));
|
||||
nsk = inet_lookup_established(sk->sk_net, &tcp_hashinfo, iph->saddr,
|
||||
th->source, iph->daddr, th->dest, inet_iif(skb));
|
||||
|
||||
if (nsk) {
|
||||
if (nsk->sk_state != TCP_TIME_WAIT) {
|
||||
|
@ -1661,8 +1661,8 @@ int tcp_v4_rcv(struct sk_buff *skb)
|
|||
TCP_SKB_CB(skb)->flags = iph->tos;
|
||||
TCP_SKB_CB(skb)->sacked = 0;
|
||||
|
||||
sk = __inet_lookup(&tcp_hashinfo, iph->saddr, th->source,
|
||||
iph->daddr, th->dest, inet_iif(skb));
|
||||
sk = __inet_lookup(skb->dev->nd_net, &tcp_hashinfo, iph->saddr,
|
||||
th->source, iph->daddr, th->dest, inet_iif(skb));
|
||||
if (!sk)
|
||||
goto no_tcp_socket;
|
||||
|
||||
|
@ -1735,7 +1735,8 @@ do_time_wait:
|
|||
}
|
||||
switch (tcp_timewait_state_process(inet_twsk(sk), skb, th)) {
|
||||
case TCP_TW_SYN: {
|
||||
struct sock *sk2 = inet_lookup_listener(&tcp_hashinfo,
|
||||
struct sock *sk2 = inet_lookup_listener(skb->dev->nd_net,
|
||||
&tcp_hashinfo,
|
||||
iph->daddr, th->dest,
|
||||
inet_iif(skb));
|
||||
if (sk2) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue