[NET]: Introduce protocol-specific destructor for time-wait sockets.
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9469c7b4aa
commit
42b6785eeb
@ -196,6 +196,7 @@ static inline void inet_twsk_put(struct inet_timewait_sock *tw)
|
|||||||
{
|
{
|
||||||
if (atomic_dec_and_test(&tw->tw_refcnt)) {
|
if (atomic_dec_and_test(&tw->tw_refcnt)) {
|
||||||
struct module *owner = tw->tw_prot->owner;
|
struct module *owner = tw->tw_prot->owner;
|
||||||
|
twsk_destructor((struct sock *)tw);
|
||||||
#ifdef SOCK_REFCNT_DEBUG
|
#ifdef SOCK_REFCNT_DEBUG
|
||||||
printk(KERN_DEBUG "%s timewait_sock %p released\n",
|
printk(KERN_DEBUG "%s timewait_sock %p released\n",
|
||||||
tw->tw_prot->name, tw);
|
tw->tw_prot->name, tw);
|
||||||
|
@ -19,6 +19,7 @@ struct timewait_sock_ops {
|
|||||||
unsigned int twsk_obj_size;
|
unsigned int twsk_obj_size;
|
||||||
int (*twsk_unique)(struct sock *sk,
|
int (*twsk_unique)(struct sock *sk,
|
||||||
struct sock *sktw, void *twp);
|
struct sock *sktw, void *twp);
|
||||||
|
void (*twsk_destructor)(struct sock *sk);
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline int twsk_unique(struct sock *sk, struct sock *sktw, void *twp)
|
static inline int twsk_unique(struct sock *sk, struct sock *sktw, void *twp)
|
||||||
@ -28,4 +29,10 @@ static inline int twsk_unique(struct sock *sk, struct sock *sktw, void *twp)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void twsk_destructor(struct sock *sk)
|
||||||
|
{
|
||||||
|
if (sk->sk_prot->twsk_prot->twsk_destructor != NULL)
|
||||||
|
sk->sk_prot->twsk_prot->twsk_destructor(sk);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* _TIMEWAIT_SOCK_H */
|
#endif /* _TIMEWAIT_SOCK_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user