2005-04-16 15:20:36 -07:00
# ifndef NET_COMPAT_H
# define NET_COMPAT_H
2006-05-30 21:27:18 -07:00
struct sock ;
2005-04-16 15:20:36 -07:00
# if defined(CONFIG_COMPAT)
# include <linux/compat.h>
struct compat_msghdr {
compat_uptr_t msg_name ; /* void * */
compat_int_t msg_namelen ;
compat_uptr_t msg_iov ; /* struct compat_iovec * */
compat_size_t msg_iovlen ;
compat_uptr_t msg_control ; /* void * */
compat_size_t msg_controllen ;
compat_uint_t msg_flags ;
} ;
2009-10-12 23:40:10 -07:00
struct compat_mmsghdr {
struct compat_msghdr msg_hdr ;
compat_uint_t msg_len ;
} ;
2005-04-16 15:20:36 -07:00
struct compat_cmsghdr {
compat_size_t cmsg_len ;
compat_int_t cmsg_level ;
compat_int_t cmsg_type ;
} ;
2006-03-21 23:59:39 -08:00
extern int compat_sock_get_timestamp ( struct sock * , struct timeval __user * ) ;
2007-03-18 17:33:16 -07:00
extern int compat_sock_get_timestampns ( struct sock * , struct timespec __user * ) ;
2006-03-21 23:59:39 -08:00
2005-04-16 15:20:36 -07:00
# else /* defined(CONFIG_COMPAT) */
2009-10-20 01:09:17 -07:00
/*
* To avoid compiler warnings :
*/
# define compat_msghdr msghdr
# define compat_mmsghdr mmsghdr
2005-04-16 15:20:36 -07:00
# endif /* defined(CONFIG_COMPAT) */
extern int get_compat_msghdr ( struct msghdr * , struct compat_msghdr __user * ) ;
2012-03-11 12:51:50 +00:00
extern int verify_compat_iovec ( struct msghdr * , struct iovec * , struct sockaddr_storage * , int ) ;
2012-04-15 05:58:06 +00:00
extern asmlinkage long compat_sys_sendmsg ( int , struct compat_msghdr __user * , unsigned int ) ;
2011-05-02 20:21:35 +00:00
extern asmlinkage long compat_sys_sendmmsg ( int , struct compat_mmsghdr __user * ,
2012-04-15 05:58:06 +00:00
unsigned int , unsigned int ) ;
extern asmlinkage long compat_sys_recvmsg ( int , struct compat_msghdr __user * , unsigned int ) ;
2009-10-12 23:40:10 -07:00
extern asmlinkage long compat_sys_recvmmsg ( int , struct compat_mmsghdr __user * ,
2012-04-15 05:58:06 +00:00
unsigned int , unsigned int ,
2009-12-09 20:58:16 +00:00
struct compat_timespec __user * ) ;
2005-04-16 15:20:36 -07:00
extern asmlinkage long compat_sys_getsockopt ( int , int , int , char __user * , int __user * ) ;
extern int put_cmsg_compat ( struct msghdr * , int , int , int , void * ) ;
2005-09-08 12:32:46 -07:00
extern int cmsghdr_from_user_compat_to_kern ( struct msghdr * , struct sock * , unsigned char * , int ) ;
2005-04-16 15:20:36 -07:00
2009-09-30 16:12:20 -07:00
extern int compat_mc_setsockopt ( struct sock * , int , int , char __user * , unsigned int ,
int ( * ) ( struct sock * , int , int , char __user * , unsigned int ) ) ;
2008-04-29 03:23:22 -07:00
extern int compat_mc_getsockopt ( struct sock * , int , int , char __user * ,
int __user * , int ( * ) ( struct sock * , int , int , char __user * ,
int __user * ) ) ;
2008-04-27 01:06:07 -07:00
2005-04-16 15:20:36 -07:00
# endif /* NET_COMPAT_H */