1#ifndef SOCKET32_H 2#define SOCKET32_H 1 3 4#define MAX_SOCK_ADDR 128 /* 108 for Unix domain - 5 16 for IP, 16 for IPX, 6 24 for IPv6, 7 about 80 for AX.25 */ 8 9extern struct socket *sockfd_lookup(int fd, int *err); 10 11extern __inline__ void sockfd_put(struct socket *sock) 12{ 13 fput(sock->file); 14} 15 16struct msghdr32 { 17 u32 msg_name; 18 int msg_namelen; 19 u32 msg_iov; 20 __kernel_size_t32 msg_iovlen; 21 u32 msg_control; 22 __kernel_size_t32 msg_controllen; 23 unsigned msg_flags; 24}; 25 26struct cmsghdr32 { 27 __kernel_size_t32 cmsg_len; 28 int cmsg_level; 29 int cmsg_type; 30}; 31 32/* Bleech... */ 33#define __CMSG32_NXTHDR(ctl, len, cmsg, cmsglen) __cmsg32_nxthdr((ctl),(len),(cmsg),(cmsglen)) 34#define CMSG32_NXTHDR(mhdr, cmsg, cmsglen) cmsg32_nxthdr((mhdr), (cmsg), (cmsglen)) 35 36#define CMSG32_ALIGN(len) ( ((len)+sizeof(int)-1) & ~(sizeof(int)-1) ) 37 38#define CMSG32_DATA(cmsg) ((void *)((char *)(cmsg) + CMSG32_ALIGN(sizeof(struct cmsghdr32)))) 39#define CMSG32_SPACE(len) (CMSG32_ALIGN(sizeof(struct cmsghdr32)) + CMSG32_ALIGN(len)) 40#define CMSG32_LEN(len) (CMSG32_ALIGN(sizeof(struct cmsghdr32)) + (len)) 41 42#define __CMSG32_FIRSTHDR(ctl,len) ((len) >= sizeof(struct cmsghdr32) ? \ 43 (struct cmsghdr32 *)(ctl) : \ 44 (struct cmsghdr32 *)NULL) 45#define CMSG32_FIRSTHDR(msg) __CMSG32_FIRSTHDR((msg)->msg_control, (msg)->msg_controllen) 46 47__inline__ struct cmsghdr32 *__cmsg32_nxthdr(void *__ctl, __kernel_size_t __size, 48 struct cmsghdr32 *__cmsg, int __cmsg_len) 49{ 50 struct cmsghdr32 * __ptr; 51 52 __ptr = (struct cmsghdr32 *)(((unsigned char *) __cmsg) + 53 CMSG32_ALIGN(__cmsg_len)); 54 if ((unsigned long)((char*)(__ptr+1) - (char *) __ctl) > __size) 55 return NULL; 56 57 return __ptr; 58} 59 60__inline__ struct cmsghdr32 *cmsg32_nxthdr (struct msghdr *__msg, 61 struct cmsghdr32 *__cmsg, 62 int __cmsg_len) 63{ 64 return __cmsg32_nxthdr(__msg->msg_control, __msg->msg_controllen, 65 __cmsg, __cmsg_len); 66} 67 68#endif 69