summaryrefslogtreecommitdiffstats
path: root/include/linux/ipv6.h
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2013-10-09 18:21:29 -0400
committerDavid S. Miller <davem@davemloft.net>2013-10-10 00:08:07 -0400
commit634fb979e8f3a70f04c1f2f519d0cd1142eb5c1a (patch)
treeffd7f7ef4a313c94859180d1bc20f2713a11f987 /include/linux/ipv6.h
parent8a29111c7ca68d928dfab58636f3f6acf0ac04f7 (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 'include/linux/ipv6.h')
-rw-r--r--include/linux/ipv6.h26
1 files changed, 2 insertions, 24 deletions
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
index 35f6c1b562c4..a80a63cfb70c 100644
--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -115,16 +115,8 @@ static inline int inet6_iif(const struct sk_buff *skb)
115 return IP6CB(skb)->iif; 115 return IP6CB(skb)->iif;
116} 116}
117 117
118struct inet6_request_sock {
119 struct in6_addr loc_addr;
120 struct in6_addr rmt_addr;
121 struct sk_buff *pktopts;
122 int iif;
123};
124
125struct tcp6_request_sock { 118struct tcp6_request_sock {
126 struct tcp_request_sock tcp6rsk_tcp; 119 struct tcp_request_sock tcp6rsk_tcp;
127 struct inet6_request_sock tcp6rsk_inet6;
128}; 120};
129 121
130struct ipv6_mc_socklist; 122struct ipv6_mc_socklist;
@@ -264,26 +256,12 @@ static inline struct ipv6_pinfo * inet6_sk(const struct sock *__sk)
264 return inet_sk(__sk)->pinet6; 256 return inet_sk(__sk)->pinet6;
265} 257}
266 258
267static inline struct inet6_request_sock *
268 inet6_rsk(const struct request_sock *rsk)
269{
270 return (struct inet6_request_sock *)(((u8 *)rsk) +
271 inet_rsk(rsk)->inet6_rsk_offset);
272}
273
274static inline u32 inet6_rsk_offset(struct request_sock *rsk)
275{
276 return rsk->rsk_ops->obj_size - sizeof(struct inet6_request_sock);
277}
278
279static inline struct request_sock *inet6_reqsk_alloc(struct request_sock_ops *ops) 259static inline struct request_sock *inet6_reqsk_alloc(struct request_sock_ops *ops)
280{ 260{
281 struct request_sock *req = reqsk_alloc(ops); 261 struct request_sock *req = reqsk_alloc(ops);
282 262
283 if (req != NULL) { 263 if (req)
284 inet_rsk(req)->inet6_rsk_offset = inet6_rsk_offset(req); 264 inet_rsk(req)->pktopts = NULL;
285 inet6_rsk(req)->pktopts = NULL;
286 }
287 265
288 return req; 266 return req;
289} 267}