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>
This commit is contained in:
committed by
David S. Miller
parent
8a29111c7c
commit
634fb979e8
@@ -115,16 +115,8 @@ static inline int inet6_iif(const struct sk_buff *skb)
|
||||
return IP6CB(skb)->iif;
|
||||
}
|
||||
|
||||
struct inet6_request_sock {
|
||||
struct in6_addr loc_addr;
|
||||
struct in6_addr rmt_addr;
|
||||
struct sk_buff *pktopts;
|
||||
int iif;
|
||||
};
|
||||
|
||||
struct tcp6_request_sock {
|
||||
struct tcp_request_sock tcp6rsk_tcp;
|
||||
struct inet6_request_sock tcp6rsk_inet6;
|
||||
};
|
||||
|
||||
struct ipv6_mc_socklist;
|
||||
@@ -264,26 +256,12 @@ static inline struct ipv6_pinfo * inet6_sk(const struct sock *__sk)
|
||||
return inet_sk(__sk)->pinet6;
|
||||
}
|
||||
|
||||
static inline struct inet6_request_sock *
|
||||
inet6_rsk(const struct request_sock *rsk)
|
||||
{
|
||||
return (struct inet6_request_sock *)(((u8 *)rsk) +
|
||||
inet_rsk(rsk)->inet6_rsk_offset);
|
||||
}
|
||||
|
||||
static inline u32 inet6_rsk_offset(struct request_sock *rsk)
|
||||
{
|
||||
return rsk->rsk_ops->obj_size - sizeof(struct inet6_request_sock);
|
||||
}
|
||||
|
||||
static inline struct request_sock *inet6_reqsk_alloc(struct request_sock_ops *ops)
|
||||
{
|
||||
struct request_sock *req = reqsk_alloc(ops);
|
||||
|
||||
if (req != NULL) {
|
||||
inet_rsk(req)->inet6_rsk_offset = inet6_rsk_offset(req);
|
||||
inet6_rsk(req)->pktopts = NULL;
|
||||
}
|
||||
if (req)
|
||||
inet_rsk(req)->pktopts = NULL;
|
||||
|
||||
return req;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user