socket32.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef SOCKET32_H
  2. #define SOCKET32_H 1
  3. /* XXX This really belongs in some header file... -DaveM */
  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. extern struct socket *sockfd_lookup(int fd, int *err);
  9. /* XXX This as well... */
  10. extern __inline__ void sockfd_put(struct socket *sock)
  11. {
  12. fput(sock->file);
  13. }
  14. struct msghdr32 {
  15.         u32               msg_name;
  16.         int               msg_namelen;
  17.         u32               msg_iov;
  18.         __kernel_size_t32 msg_iovlen;
  19.         u32               msg_control;
  20.         __kernel_size_t32 msg_controllen;
  21.         unsigned          msg_flags;
  22. };
  23. struct cmsghdr32 {
  24.         __kernel_size_t32 cmsg_len;
  25.         int               cmsg_level;
  26.         int               cmsg_type;
  27. };
  28. /* Bleech... */
  29. #define __CMSG32_NXTHDR(ctl, len, cmsg, cmsglen) __cmsg32_nxthdr((ctl),(len),(cmsg),(cmsglen))
  30. #define CMSG32_NXTHDR(mhdr, cmsg, cmsglen) cmsg32_nxthdr((mhdr), (cmsg), (cmsglen))
  31. #define CMSG32_ALIGN(len) ( ((len)+sizeof(int)-1) & ~(sizeof(int)-1) )
  32. #define CMSG32_DATA(cmsg) ((void *)((char *)(cmsg) + CMSG32_ALIGN(sizeof(struct cmsghdr32))))
  33. #define CMSG32_SPACE(len) (CMSG32_ALIGN(sizeof(struct cmsghdr32)) + CMSG32_ALIGN(len))
  34. #define CMSG32_LEN(len) (CMSG32_ALIGN(sizeof(struct cmsghdr32)) + (len))
  35. #define __CMSG32_FIRSTHDR(ctl,len) ((len) >= sizeof(struct cmsghdr32) ? 
  36.     (struct cmsghdr32 *)(ctl) : 
  37.     (struct cmsghdr32 *)NULL)
  38. #define CMSG32_FIRSTHDR(msg) __CMSG32_FIRSTHDR((msg)->msg_control, (msg)->msg_controllen)
  39. __inline__ struct cmsghdr32 *__cmsg32_nxthdr(void *__ctl, __kernel_size_t __size,
  40.       struct cmsghdr32 *__cmsg, int __cmsg_len)
  41. {
  42. struct cmsghdr32 * __ptr;
  43. __ptr = (struct cmsghdr32 *)(((unsigned char *) __cmsg) +
  44.      CMSG32_ALIGN(__cmsg_len));
  45. if ((unsigned long)((char*)(__ptr+1) - (char *) __ctl) > __size)
  46. return NULL;
  47. return __ptr;
  48. }
  49. __inline__ struct cmsghdr32 *cmsg32_nxthdr (struct msghdr *__msg,
  50.     struct cmsghdr32 *__cmsg,
  51.     int __cmsg_len)
  52. {
  53. return __cmsg32_nxthdr(__msg->msg_control, __msg->msg_controllen,
  54.        __cmsg, __cmsg_len);
  55. }
  56. #endif