Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 313917
b: refs/heads/master
c: 4670fd8
h: refs/heads/master
i:
  313915: 3abd675
v: v3
  • Loading branch information
David S. Miller committed Jun 9, 2012
1 parent eb60114 commit e0117b7
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 33 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: fbfe95a42e90b3dd079cc9019ba7d7700feee0f6
refs/heads/master: 4670fd819e7f47392c7c6fc6168ea2857c66d163
2 changes: 1 addition & 1 deletion trunk/include/net/inet_connection_sock.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ struct inet_connection_sock_af_ops {
struct sock *(*syn_recv_sock)(struct sock *sk, struct sk_buff *skb,
struct request_sock *req,
struct dst_entry *dst);
struct inet_peer *(*get_peer)(struct sock *sk, bool *release_it);
struct inet_peer *(*get_peer)(struct sock *sk);
u16 net_header_len;
u16 net_frag_header_len;
u16 sockaddr_len;
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/net/tcp.h
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ extern void tcp_shutdown (struct sock *sk, int how);

extern int tcp_v4_rcv(struct sk_buff *skb);

extern struct inet_peer *tcp_v4_get_peer(struct sock *sk, bool *release_it);
extern struct inet_peer *tcp_v4_get_peer(struct sock *sk);
extern void *tcp_v4_tw_get_peer(struct sock *sk);
extern int tcp_v4_tw_remember_stamp(struct inet_timewait_sock *tw);
extern int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
Expand Down
21 changes: 8 additions & 13 deletions trunk/net/ipv4/tcp_ipv4.c
Original file line number Diff line number Diff line change
Expand Up @@ -1820,23 +1820,18 @@ int tcp_v4_rcv(struct sk_buff *skb)
goto discard_it;
}

struct inet_peer *tcp_v4_get_peer(struct sock *sk, bool *release_it)
struct inet_peer *tcp_v4_get_peer(struct sock *sk)
{
struct rtable *rt = (struct rtable *) __sk_dst_get(sk);
struct inet_sock *inet = inet_sk(sk);
struct net *net = sock_net(sk);
struct inet_peer *peer;

if (!rt ||
inet->cork.fl.u.ip4.daddr != inet->inet_daddr) {
peer = inet_getpeer_v4(net, inet->inet_daddr, 1);
*release_it = true;
} else {
peer = rt_get_peer_create(rt, inet->inet_daddr);
*release_it = false;
}

return peer;
/* If we don't have a valid cached route, or we're doing IP
* options which make the IPv4 header destination address
* different from our peer's, do not bother with this.
*/
if (!rt || inet->cork.fl.u.ip4.daddr != inet->inet_daddr)
return NULL;
return rt_get_peer_create(rt, inet->inet_daddr);
}
EXPORT_SYMBOL(tcp_v4_get_peer);

Expand Down
5 changes: 1 addition & 4 deletions trunk/net/ipv4/tcp_minisocks.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,18 +60,15 @@ static bool tcp_remember_stamp(struct sock *sk)
const struct inet_connection_sock *icsk = inet_csk(sk);
struct tcp_sock *tp = tcp_sk(sk);
struct inet_peer *peer;
bool release_it;

peer = icsk->icsk_af_ops->get_peer(sk, &release_it);
peer = icsk->icsk_af_ops->get_peer(sk);
if (peer) {
if ((s32)(peer->tcp_ts - tp->rx_opt.ts_recent) <= 0 ||
((u32)get_seconds() - peer->tcp_ts_stamp > TCP_PAWS_MSL &&
peer->tcp_ts_stamp <= (u32)tp->rx_opt.ts_recent_stamp)) {
peer->tcp_ts_stamp = (u32)tp->rx_opt.ts_recent_stamp;
peer->tcp_ts = tp->rx_opt.ts_recent;
}
if (release_it)
inet_putpeer(peer);
return true;
}

Expand Down
21 changes: 8 additions & 13 deletions trunk/net/ipv6/tcp_ipv6.c
Original file line number Diff line number Diff line change
Expand Up @@ -1732,23 +1732,18 @@ static int tcp_v6_rcv(struct sk_buff *skb)
goto discard_it;
}

static struct inet_peer *tcp_v6_get_peer(struct sock *sk, bool *release_it)
static struct inet_peer *tcp_v6_get_peer(struct sock *sk)
{
struct rt6_info *rt = (struct rt6_info *) __sk_dst_get(sk);
struct ipv6_pinfo *np = inet6_sk(sk);
struct net *net = sock_net(sk);
struct inet_peer *peer;

if (!rt ||
!ipv6_addr_equal(&np->daddr, &rt->rt6i_dst.addr)) {
peer = inet_getpeer_v6(net, &np->daddr, 1);
*release_it = true;
} else {
peer = rt6_get_peer_create(rt);
*release_it = false;
}

return peer;
/* If we don't have a valid cached route, or we're doing IP
* options which make the IPv6 header destination address
* different from our peer's, do not bother with this.
*/
if (!rt || !ipv6_addr_equal(&np->daddr, &rt->rt6i_dst.addr))
return NULL;
return rt6_get_peer_create(rt);
}

static void *tcp_v6_tw_get_peer(struct sock *sk)
Expand Down

0 comments on commit e0117b7

Please sign in to comment.