diff options
author | Eric Dumazet <edumazet@google.com> | 2013-10-09 18:21:29 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-10-10 00:08:07 -0400 |
commit | 634fb979e8f3a70f04c1f2f519d0cd1142eb5c1a (patch) | |
tree | ffd7f7ef4a313c94859180d1bc20f2713a11f987 /net/ipv6/inet6_connection_sock.c | |
parent | 8a29111c7ca68d928dfab58636f3f6acf0ac04f7 (diff) |
inet: includes a sock_common in request_sock
TCP listener refactoring, part 5 :
We want to be able to insert request sockets (SYN_RECV) into main
ehash table instead of the per listener hash table to allow RCU
lookups and remove listener lock contention.
This patch includes the needed struct sock_common in front
of struct request_sock
This means there is no more inet6_request_sock IPv6 specific
structure.
Following inet_request_sock fields were renamed as they became
macros to reference fields from struct sock_common.
Prefix ir_ was chosen to avoid name collisions.
loc_port -> ir_loc_port
loc_addr -> ir_loc_addr
rmt_addr -> ir_rmt_addr
rmt_port -> ir_rmt_port
iif -> ir_iif
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/inet6_connection_sock.c')
-rw-r--r-- | net/ipv6/inet6_connection_sock.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c index b7400b480e74..1317c569b58f 100644 --- a/net/ipv6/inet6_connection_sock.c +++ b/net/ipv6/inet6_connection_sock.c | |||
@@ -70,20 +70,20 @@ struct dst_entry *inet6_csk_route_req(struct sock *sk, | |||
70 | struct flowi6 *fl6, | 70 | struct flowi6 *fl6, |
71 | const struct request_sock *req) | 71 | const struct request_sock *req) |
72 | { | 72 | { |
73 | struct inet6_request_sock *treq = inet6_rsk(req); | 73 | struct inet_request_sock *ireq = inet_rsk(req); |
74 | struct ipv6_pinfo *np = inet6_sk(sk); | 74 | struct ipv6_pinfo *np = inet6_sk(sk); |
75 | struct in6_addr *final_p, final; | 75 | struct in6_addr *final_p, final; |
76 | struct dst_entry *dst; | 76 | struct dst_entry *dst; |
77 | 77 | ||
78 | memset(fl6, 0, sizeof(*fl6)); | 78 | memset(fl6, 0, sizeof(*fl6)); |
79 | fl6->flowi6_proto = IPPROTO_TCP; | 79 | fl6->flowi6_proto = IPPROTO_TCP; |
80 | fl6->daddr = treq->rmt_addr; | 80 | fl6->daddr = ireq->ir_v6_rmt_addr; |
81 | final_p = fl6_update_dst(fl6, np->opt, &final); | 81 | final_p = fl6_update_dst(fl6, np->opt, &final); |
82 | fl6->saddr = treq->loc_addr; | 82 | fl6->saddr = ireq->ir_v6_loc_addr; |
83 | fl6->flowi6_oif = treq->iif; | 83 | fl6->flowi6_oif = ireq->ir_iif; |
84 | fl6->flowi6_mark = sk->sk_mark; | 84 | fl6->flowi6_mark = sk->sk_mark; |
85 | fl6->fl6_dport = inet_rsk(req)->rmt_port; | 85 | fl6->fl6_dport = ireq->ir_rmt_port; |
86 | fl6->fl6_sport = inet_rsk(req)->loc_port; | 86 | fl6->fl6_sport = ireq->ir_loc_port; |
87 | security_req_classify_flow(req, flowi6_to_flowi(fl6)); | 87 | security_req_classify_flow(req, flowi6_to_flowi(fl6)); |
88 | 88 | ||
89 | dst = ip6_dst_lookup_flow(sk, fl6, final_p, false); | 89 | dst = ip6_dst_lookup_flow(sk, fl6, final_p, false); |
@@ -129,13 +129,13 @@ struct request_sock *inet6_csk_search_req(const struct sock *sk, | |||
129 | lopt->nr_table_entries)]; | 129 | lopt->nr_table_entries)]; |
130 | (req = *prev) != NULL; | 130 | (req = *prev) != NULL; |
131 | prev = &req->dl_next) { | 131 | prev = &req->dl_next) { |
132 | const struct inet6_request_sock *treq = inet6_rsk(req); | 132 | const struct inet_request_sock *ireq = inet_rsk(req); |
133 | 133 | ||
134 | if (inet_rsk(req)->rmt_port == rport && | 134 | if (ireq->ir_rmt_port == rport && |
135 | req->rsk_ops->family == AF_INET6 && | 135 | req->rsk_ops->family == AF_INET6 && |
136 | ipv6_addr_equal(&treq->rmt_addr, raddr) && | 136 | ipv6_addr_equal(&ireq->ir_v6_rmt_addr, raddr) && |
137 | ipv6_addr_equal(&treq->loc_addr, laddr) && | 137 | ipv6_addr_equal(&ireq->ir_v6_loc_addr, laddr) && |
138 | (!treq->iif || treq->iif == iif)) { | 138 | (!ireq->ir_iif || ireq->ir_iif == iif)) { |
139 | WARN_ON(req->sk != NULL); | 139 | WARN_ON(req->sk != NULL); |
140 | *prevp = prev; | 140 | *prevp = prev; |
141 | return req; | 141 | return req; |
@@ -153,8 +153,8 @@ void inet6_csk_reqsk_queue_hash_add(struct sock *sk, | |||
153 | { | 153 | { |
154 | struct inet_connection_sock *icsk = inet_csk(sk); | 154 | struct inet_connection_sock *icsk = inet_csk(sk); |
155 | struct listen_sock *lopt = icsk->icsk_accept_queue.listen_opt; | 155 | struct listen_sock *lopt = icsk->icsk_accept_queue.listen_opt; |
156 | const u32 h = inet6_synq_hash(&inet6_rsk(req)->rmt_addr, | 156 | const u32 h = inet6_synq_hash(&inet_rsk(req)->ir_v6_rmt_addr, |
157 | inet_rsk(req)->rmt_port, | 157 | inet_rsk(req)->ir_rmt_port, |
158 | lopt->hash_rnd, lopt->nr_table_entries); | 158 | lopt->hash_rnd, lopt->nr_table_entries); |
159 | 159 | ||
160 | reqsk_queue_hash_req(&icsk->icsk_accept_queue, h, req, timeout); | 160 | reqsk_queue_hash_req(&icsk->icsk_accept_queue, h, req, timeout); |