X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fnet%2Ftimewait_sock.h;h=1e1ee3253fd8fd9a46d24778f9534e7c042f98a4;hb=8b91ac09732895f928ed6107bda5318cf260520b;hp=2544281e1d5e60f3e8b60ff1006327135c452576;hpb=1cb9e8e01d2c73184e2074f37cd155b3c4fdaae6;p=linux-2.6 diff --git a/include/net/timewait_sock.h b/include/net/timewait_sock.h index 2544281e1d..1e1ee3253f 100644 --- a/include/net/timewait_sock.h +++ b/include/net/timewait_sock.h @@ -15,10 +15,11 @@ #include struct timewait_sock_ops { - kmem_cache_t *twsk_slab; + struct kmem_cache *twsk_slab; unsigned int twsk_obj_size; int (*twsk_unique)(struct sock *sk, struct sock *sktw, void *twp); + void (*twsk_destructor)(struct sock *sk); }; static inline int twsk_unique(struct sock *sk, struct sock *sktw, void *twp) @@ -28,4 +29,13 @@ static inline int twsk_unique(struct sock *sk, struct sock *sktw, void *twp) return 0; } +static inline void twsk_destructor(struct sock *sk) +{ + BUG_ON(sk == NULL); + BUG_ON(sk->sk_prot == NULL); + BUG_ON(sk->sk_prot->twsk_prot == NULL); + if (sk->sk_prot->twsk_prot->twsk_destructor != NULL) + sk->sk_prot->twsk_prot->twsk_destructor(sk); +} + #endif /* _TIMEWAIT_SOCK_H */