2005-12-14 10:25:19 +03:00
/*
* NET Generic infrastructure for Network protocols .
*
* Authors : Arnaldo Carvalho de Melo < acme @ conectiva . com . br >
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version
* 2 of the License , or ( at your option ) any later version .
*/
# ifndef _TIMEWAIT_SOCK_H
# define _TIMEWAIT_SOCK_H
# include <linux/slab.h>
# include <net/sock.h>
struct timewait_sock_ops {
2006-12-07 07:33:20 +03:00
struct kmem_cache * twsk_slab ;
2008-11-22 03:45:22 +03:00
char * twsk_slab_name ;
2005-12-14 10:25:19 +03:00
unsigned int twsk_obj_size ;
int ( * twsk_unique ) ( struct sock * sk ,
struct sock * sktw , void * twp ) ;
2006-10-11 06:42:09 +04:00
void ( * twsk_destructor ) ( struct sock * sk ) ;
2010-12-02 05:09:13 +03:00
void * ( * twsk_getpeer ) ( struct sock * sk ) ;
2005-12-14 10:25:19 +03:00
} ;
static inline int twsk_unique ( struct sock * sk , struct sock * sktw , void * twp )
{
if ( sk - > sk_prot - > twsk_prot - > twsk_unique ! = NULL )
return sk - > sk_prot - > twsk_prot - > twsk_unique ( sk , sktw , twp ) ;
return 0 ;
}
2006-10-11 06:42:09 +04:00
static inline void twsk_destructor ( struct sock * sk )
{
2006-11-15 06:07:45 +03:00
BUG_ON ( sk = = NULL ) ;
BUG_ON ( sk - > sk_prot = = NULL ) ;
BUG_ON ( sk - > sk_prot - > twsk_prot = = NULL ) ;
2006-10-11 06:42:09 +04:00
if ( sk - > sk_prot - > twsk_prot - > twsk_destructor ! = NULL )
sk - > sk_prot - > twsk_prot - > twsk_destructor ( sk ) ;
}
2010-12-02 05:09:13 +03:00
static inline void * twsk_getpeer ( struct sock * sk )
{
if ( sk - > sk_prot - > twsk_prot - > twsk_getpeer )
return sk - > sk_prot - > twsk_prot - > twsk_getpeer ( sk ) ;
return NULL ;
}
2005-12-14 10:25:19 +03:00
# endif /* _TIMEWAIT_SOCK_H */