mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	sun_len. * ext/socket/sockport.h (INIT_SOCKADDR_UN): new macro defined. * ext/socket/socket.c (sock_s_pack_sockaddr_un): use INIT_SOCKADDR_UN. * ext/socket/unixsocket.c (rsock_init_unixsock): ditto. * ext/socket/raddrinfo.c (init_unix_addrinfo): ditto. (addrinfo_mload): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39260 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			101 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/************************************************
 | 
						|
 | 
						|
  sockport.h -
 | 
						|
 | 
						|
  $Author$
 | 
						|
  created at: Fri Apr 30 23:19:34 JST 1999
 | 
						|
 | 
						|
************************************************/
 | 
						|
 | 
						|
#ifndef SOCKPORT_H
 | 
						|
#define SOCKPORT_H
 | 
						|
 | 
						|
#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
 | 
						|
# define VALIDATE_SOCKLEN(addr, len) ((addr)->sa_len == (len))
 | 
						|
#else
 | 
						|
# define VALIDATE_SOCKLEN(addr, len) ((void)(addr), (void)(len), 1)
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
 | 
						|
# define SET_SA_LEN(sa, len) (void)((sa)->sa_len = (len))
 | 
						|
#else
 | 
						|
# define SET_SA_LEN(sa, len) (void)(len)
 | 
						|
#endif
 | 
						|
 | 
						|
/* for strict-aliasing rule */
 | 
						|
#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
 | 
						|
# define SET_SIN_LEN(sa, len) (void)((sa)->sin_len = (len))
 | 
						|
#else
 | 
						|
# define SET_SIN_LEN(sa, len) SET_SA_LEN((struct sockaddr *)(sa), (len))
 | 
						|
#endif
 | 
						|
 | 
						|
#define INIT_SOCKADDR(addr, family, len) \
 | 
						|
  do { \
 | 
						|
    struct sockaddr *init_sockaddr_ptr = (addr); \
 | 
						|
    socklen_t init_sockaddr_len = (len); \
 | 
						|
    memset(init_sockaddr_ptr, 0, init_sockaddr_len); \
 | 
						|
    init_sockaddr_ptr->sa_family = (family); \
 | 
						|
    SET_SA_LEN(init_sockaddr_ptr, init_sockaddr_len); \
 | 
						|
  } while (0)
 | 
						|
 | 
						|
#define INIT_SOCKADDR_IN(addr, len) \
 | 
						|
  do { \
 | 
						|
    struct sockaddr_in *init_sockaddr_ptr = (addr); \
 | 
						|
    socklen_t init_sockaddr_len = (len); \
 | 
						|
    memset(init_sockaddr_ptr, 0, init_sockaddr_len); \
 | 
						|
    init_sockaddr_ptr->sin_family = AF_INET; \
 | 
						|
    SET_SIN_LEN(init_sockaddr_ptr, init_sockaddr_len); \
 | 
						|
  } while (0)
 | 
						|
 | 
						|
 | 
						|
/* for strict-aliasing rule */
 | 
						|
#ifdef HAVE_TYPE_STRUCT_SOCKADDR_UN
 | 
						|
#  ifdef HAVE_STRUCT_SOCKADDR_IN_SUN_LEN
 | 
						|
#    define SET_SUN_LEN(sa, len) (void)((sa)->sun_len = (len))
 | 
						|
#  else
 | 
						|
#    define SET_SUN_LEN(sa, len) SET_SA_LEN((struct sockaddr *)(sa), (len))
 | 
						|
#  endif
 | 
						|
#  define INIT_SOCKADDR_UN(addr, len) \
 | 
						|
     do { \
 | 
						|
         struct sockaddr_un *init_sockaddr_ptr = (addr); \
 | 
						|
         socklen_t init_sockaddr_len = (len); \
 | 
						|
         memset(init_sockaddr_ptr, 0, init_sockaddr_len); \
 | 
						|
         init_sockaddr_ptr->sun_family = AF_UNIX; \
 | 
						|
         SET_SUN_LEN(init_sockaddr_ptr, init_sockaddr_len); \
 | 
						|
     } while (0)
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef IN_MULTICAST
 | 
						|
# define IN_CLASSD(i)	(((long)(i) & 0xf0000000) == 0xe0000000)
 | 
						|
# define IN_MULTICAST(i)	IN_CLASSD(i)
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef IN_EXPERIMENTAL
 | 
						|
# define IN_EXPERIMENTAL(i) ((((long)(i)) & 0xe0000000) == 0xe0000000)
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef IN_CLASSA_NSHIFT
 | 
						|
# define IN_CLASSA_NSHIFT 24
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef IN_LOOPBACKNET
 | 
						|
# define IN_LOOPBACKNET 127
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef AF_UNSPEC
 | 
						|
# define AF_UNSPEC 0
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef PF_UNSPEC
 | 
						|
# define PF_UNSPEC AF_UNSPEC
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef PF_INET
 | 
						|
# define PF_INET AF_INET
 | 
						|
#endif
 | 
						|
 | 
						|
#if defined(HOST_NOT_FOUND) && !defined(h_errno) && !defined(__CYGWIN__)
 | 
						|
extern int h_errno;
 | 
						|
#endif
 | 
						|
 | 
						|
#endif
 |