Ruby
2.5.0dev(2017-10-22revision60238)
ext
socket
sockport.h
Go to the documentation of this file.
1
/************************************************
2
3
sockport.h -
4
5
$Author$
6
created at: Fri Apr 30 23:19:34 JST 1999
7
8
************************************************/
9
10
#ifndef SOCKPORT_H
11
#define SOCKPORT_H
12
13
#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
14
# define VALIDATE_SOCKLEN(addr, len) ((addr)->sa_len == (len))
15
#else
16
# define VALIDATE_SOCKLEN(addr, len) ((void)(addr), (void)(len), 1)
17
#endif
18
19
#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
20
# define SET_SA_LEN(sa, len) (void)((sa)->sa_len = (len))
21
#else
22
# define SET_SA_LEN(sa, len) (void)(len)
23
#endif
24
25
/* for strict-aliasing rule */
26
#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
27
# define SET_SIN_LEN(sa, len) (void)((sa)->sin_len = (len))
28
#else
29
# define SET_SIN_LEN(sa, len) SET_SA_LEN((struct sockaddr *)(sa), (len))
30
#endif
31
32
#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN
33
# define SET_SIN6_LEN(sa, len) (void)((sa)->sin6_len = (len))
34
#else
35
# define SET_SIN6_LEN(sa, len) SET_SA_LEN((struct sockaddr *)(sa), (len))
36
#endif
37
38
#define INIT_SOCKADDR(addr, family, len) \
39
do { \
40
struct sockaddr *init_sockaddr_ptr = (addr); \
41
socklen_t init_sockaddr_len = (len); \
42
memset(init_sockaddr_ptr, 0, init_sockaddr_len); \
43
init_sockaddr_ptr->sa_family = (family); \
44
SET_SA_LEN(init_sockaddr_ptr, init_sockaddr_len); \
45
} while (0)
46
47
#define INIT_SOCKADDR_IN(addr, len) \
48
do { \
49
struct sockaddr_in *init_sockaddr_ptr = (addr); \
50
socklen_t init_sockaddr_len = (len); \
51
memset(init_sockaddr_ptr, 0, init_sockaddr_len); \
52
init_sockaddr_ptr->sin_family = AF_INET; \
53
SET_SIN_LEN(init_sockaddr_ptr, init_sockaddr_len); \
54
} while (0)
55
56
#define INIT_SOCKADDR_IN6(addr, len) \
57
do { \
58
struct sockaddr_in6 *init_sockaddr_ptr = (addr); \
59
socklen_t init_sockaddr_len = (len); \
60
memset(init_sockaddr_ptr, 0, init_sockaddr_len); \
61
init_sockaddr_ptr->sin6_family = AF_INET6; \
62
SET_SIN6_LEN(init_sockaddr_ptr, init_sockaddr_len); \
63
} while (0)
64
65
66
/* for strict-aliasing rule */
67
#ifdef HAVE_TYPE_STRUCT_SOCKADDR_UN
68
# ifdef HAVE_STRUCT_SOCKADDR_IN_SUN_LEN
69
# define SET_SUN_LEN(sa, len) (void)((sa)->sun_len = (len))
70
# else
71
# define SET_SUN_LEN(sa, len) SET_SA_LEN((struct sockaddr *)(sa), (len))
72
# endif
73
# define INIT_SOCKADDR_UN(addr, len) \
74
do { \
75
struct sockaddr_un *init_sockaddr_ptr = (addr); \
76
socklen_t init_sockaddr_len = (len); \
77
memset(init_sockaddr_ptr, 0, init_sockaddr_len); \
78
init_sockaddr_ptr->sun_family = AF_UNIX; \
79
SET_SUN_LEN(init_sockaddr_ptr, init_sockaddr_len); \
80
} while (0)
81
#endif
82
83
#ifndef IN_MULTICAST
84
# define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000)
85
# define IN_MULTICAST(i) IN_CLASSD(i)
86
#endif
87
88
#ifndef IN_EXPERIMENTAL
89
# define IN_EXPERIMENTAL(i) ((((long)(i)) & 0xe0000000) == 0xe0000000)
90
#endif
91
92
#ifndef IN_CLASSA_NSHIFT
93
# define IN_CLASSA_NSHIFT 24
94
#endif
95
96
#ifndef IN_LOOPBACKNET
97
# define IN_LOOPBACKNET 127
98
#endif
99
100
#ifndef AF_UNSPEC
101
# define AF_UNSPEC 0
102
#endif
103
104
#ifndef PF_UNSPEC
105
# define PF_UNSPEC AF_UNSPEC
106
#endif
107
108
#ifndef PF_INET
109
# define PF_INET AF_INET
110
#endif
111
112
#if defined(HOST_NOT_FOUND) && !defined(h_errno) && !defined(__CYGWIN__)
113
extern
int
h_errno;
114
#endif
115
116
#endif
Generated by
1.8.13