11da177e4SLinus Torvalds #ifndef NET_COMPAT_H 21da177e4SLinus Torvalds #define NET_COMPAT_H 31da177e4SLinus Torvalds 41da177e4SLinus Torvalds 529f767a2SAndrew Morton struct sock; 629f767a2SAndrew Morton 71da177e4SLinus Torvalds #if defined(CONFIG_COMPAT) 81da177e4SLinus Torvalds 91da177e4SLinus Torvalds #include <linux/compat.h> 101da177e4SLinus Torvalds 111da177e4SLinus Torvalds struct compat_msghdr { 121da177e4SLinus Torvalds compat_uptr_t msg_name; /* void * */ 131da177e4SLinus Torvalds compat_int_t msg_namelen; 141da177e4SLinus Torvalds compat_uptr_t msg_iov; /* struct compat_iovec * */ 151da177e4SLinus Torvalds compat_size_t msg_iovlen; 161da177e4SLinus Torvalds compat_uptr_t msg_control; /* void * */ 171da177e4SLinus Torvalds compat_size_t msg_controllen; 181da177e4SLinus Torvalds compat_uint_t msg_flags; 191da177e4SLinus Torvalds }; 201da177e4SLinus Torvalds 21a2e27255SArnaldo Carvalho de Melo struct compat_mmsghdr { 22a2e27255SArnaldo Carvalho de Melo struct compat_msghdr msg_hdr; 23a2e27255SArnaldo Carvalho de Melo compat_uint_t msg_len; 24a2e27255SArnaldo Carvalho de Melo }; 25a2e27255SArnaldo Carvalho de Melo 261da177e4SLinus Torvalds struct compat_cmsghdr { 271da177e4SLinus Torvalds compat_size_t cmsg_len; 281da177e4SLinus Torvalds compat_int_t cmsg_level; 291da177e4SLinus Torvalds compat_int_t cmsg_type; 301da177e4SLinus Torvalds }; 311da177e4SLinus Torvalds 32e8d895a4SJoe Perches int compat_sock_get_timestamp(struct sock *, struct timeval __user *); 33e8d895a4SJoe Perches int compat_sock_get_timestampns(struct sock *, struct timespec __user *); 34f0ac2614SShaun Pereira 351da177e4SLinus Torvalds #else /* defined(CONFIG_COMPAT) */ 3674887977SArnaldo Carvalho de Melo /* 3774887977SArnaldo Carvalho de Melo * To avoid compiler warnings: 3874887977SArnaldo Carvalho de Melo */ 3974887977SArnaldo Carvalho de Melo #define compat_msghdr msghdr 4074887977SArnaldo Carvalho de Melo #define compat_mmsghdr mmsghdr 411da177e4SLinus Torvalds #endif /* defined(CONFIG_COMPAT) */ 421da177e4SLinus Torvalds 43da184284SAl Viro int get_compat_msghdr(struct msghdr *, struct compat_msghdr __user *, 4408adb7daSAl Viro struct sockaddr __user **, struct iovec **); 45e8d895a4SJoe Perches asmlinkage long compat_sys_sendmsg(int, struct compat_msghdr __user *, 46e8d895a4SJoe Perches unsigned int); 47e8d895a4SJoe Perches asmlinkage long compat_sys_sendmmsg(int, struct compat_mmsghdr __user *, 4895c96174SEric Dumazet unsigned int, unsigned int); 49e8d895a4SJoe Perches asmlinkage long compat_sys_recvmsg(int, struct compat_msghdr __user *, 50e8d895a4SJoe Perches unsigned int); 51e8d895a4SJoe Perches asmlinkage long compat_sys_recvmmsg(int, struct compat_mmsghdr __user *, 5295c96174SEric Dumazet unsigned int, unsigned int, 5360c2ffd3SHeiko Carstens struct compat_timespec __user *); 54e8d895a4SJoe Perches asmlinkage long compat_sys_getsockopt(int, int, int, char __user *, 55e8d895a4SJoe Perches int __user *); 56e8d895a4SJoe Perches int put_cmsg_compat(struct msghdr*, int, int, int, void *); 57e50ef933SDavid S. Miller 58e8d895a4SJoe Perches int cmsghdr_from_user_compat_to_kern(struct msghdr *, struct sock *, 59e8d895a4SJoe Perches unsigned char *, int); 601da177e4SLinus Torvalds 61e8d895a4SJoe Perches int compat_mc_setsockopt(struct sock *, int, int, char __user *, unsigned int, 62e8d895a4SJoe Perches int (*)(struct sock *, int, int, char __user *, 63e8d895a4SJoe Perches unsigned int)); 64e8d895a4SJoe Perches int compat_mc_getsockopt(struct sock *, int, int, char __user *, int __user *, 65e8d895a4SJoe Perches int (*)(struct sock *, int, int, char __user *, 6642908c69SDavid L Stevens int __user *)); 67dae50295SDavid L Stevens 681da177e4SLinus Torvalds #endif /* NET_COMPAT_H */ 69