ext/socket/sockport.h

Go to the documentation of this file.
00001 /************************************************
00002 
00003   sockport.h -
00004 
00005   $Author: nagachika $
00006   created at: Fri Apr 30 23:19:34 JST 1999
00007 
00008 ************************************************/
00009 
00010 #ifndef SOCKPORT_H
00011 #define SOCKPORT_H
00012 
00013 #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
00014 # define VALIDATE_SOCKLEN(addr, len) ((addr)->sa_len == (len))
00015 #else
00016 # define VALIDATE_SOCKLEN(addr, len) ((void)(addr), (void)(len), 1)
00017 #endif
00018 
00019 #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
00020 # define SET_SA_LEN(sa, len) (void)((sa)->sa_len = (len))
00021 #else
00022 # define SET_SA_LEN(sa, len) (void)(len)
00023 #endif
00024 
00025 /* for strict-aliasing rule */
00026 #ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
00027 # define SET_SIN_LEN(sa, len) (void)((sa)->sin_len = (len))
00028 #else
00029 # define SET_SIN_LEN(sa, len) SET_SA_LEN((struct sockaddr *)(sa), (len))
00030 #endif
00031 
00032 #ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN
00033 # define SET_SIN6_LEN(sa, len) (void)((sa)->sin6_len = (len))
00034 #else
00035 # define SET_SIN6_LEN(sa, len) SET_SA_LEN((struct sockaddr *)(sa), (len))
00036 #endif
00037 
00038 #define INIT_SOCKADDR(addr, family, len) \
00039   do { \
00040     struct sockaddr *init_sockaddr_ptr = (addr); \
00041     socklen_t init_sockaddr_len = (len); \
00042     memset(init_sockaddr_ptr, 0, init_sockaddr_len); \
00043     init_sockaddr_ptr->sa_family = (family); \
00044     SET_SA_LEN(init_sockaddr_ptr, init_sockaddr_len); \
00045   } while (0)
00046 
00047 #define INIT_SOCKADDR_IN(addr, len) \
00048   do { \
00049     struct sockaddr_in *init_sockaddr_ptr = (addr); \
00050     socklen_t init_sockaddr_len = (len); \
00051     memset(init_sockaddr_ptr, 0, init_sockaddr_len); \
00052     init_sockaddr_ptr->sin_family = AF_INET; \
00053     SET_SIN_LEN(init_sockaddr_ptr, init_sockaddr_len); \
00054   } while (0)
00055 
00056 #define INIT_SOCKADDR_IN6(addr, len) \
00057   do { \
00058     struct sockaddr_in6 *init_sockaddr_ptr = (addr); \
00059     socklen_t init_sockaddr_len = (len); \
00060     memset(init_sockaddr_ptr, 0, init_sockaddr_len); \
00061     init_sockaddr_ptr->sin6_family = AF_INET6; \
00062     SET_SIN6_LEN(init_sockaddr_ptr, init_sockaddr_len); \
00063   } while (0)
00064 
00065 
00066 /* for strict-aliasing rule */
00067 #ifdef HAVE_TYPE_STRUCT_SOCKADDR_UN
00068 #  ifdef HAVE_STRUCT_SOCKADDR_IN_SUN_LEN
00069 #    define SET_SUN_LEN(sa, len) (void)((sa)->sun_len = (len))
00070 #  else
00071 #    define SET_SUN_LEN(sa, len) SET_SA_LEN((struct sockaddr *)(sa), (len))
00072 #  endif
00073 #  define INIT_SOCKADDR_UN(addr, len) \
00074      do { \
00075          struct sockaddr_un *init_sockaddr_ptr = (addr); \
00076          socklen_t init_sockaddr_len = (len); \
00077          memset(init_sockaddr_ptr, 0, init_sockaddr_len); \
00078          init_sockaddr_ptr->sun_family = AF_UNIX; \
00079          SET_SUN_LEN(init_sockaddr_ptr, init_sockaddr_len); \
00080      } while (0)
00081 #endif
00082 
00083 #ifndef IN_MULTICAST
00084 # define IN_CLASSD(i)   (((long)(i) & 0xf0000000) == 0xe0000000)
00085 # define IN_MULTICAST(i)        IN_CLASSD(i)
00086 #endif
00087 
00088 #ifndef IN_EXPERIMENTAL
00089 # define IN_EXPERIMENTAL(i) ((((long)(i)) & 0xe0000000) == 0xe0000000)
00090 #endif
00091 
00092 #ifndef IN_CLASSA_NSHIFT
00093 # define IN_CLASSA_NSHIFT 24
00094 #endif
00095 
00096 #ifndef IN_LOOPBACKNET
00097 # define IN_LOOPBACKNET 127
00098 #endif
00099 
00100 #ifndef AF_UNSPEC
00101 # define AF_UNSPEC 0
00102 #endif
00103 
00104 #ifndef PF_UNSPEC
00105 # define PF_UNSPEC AF_UNSPEC
00106 #endif
00107 
00108 #ifndef PF_INET
00109 # define PF_INET AF_INET
00110 #endif
00111 
00112 #if defined(HOST_NOT_FOUND) && !defined(h_errno) && !defined(__CYGWIN__)
00113 extern int h_errno;
00114 #endif
00115 
00116 #endif
00117 

Generated on 19 Jul 2016 for Ruby by  doxygen 1.4.7