3131set_and_get_bool_opt (int socket_fd , int level , int optname , int val )
3232{
3333 int bool_opt = val ;
34+ int ret = -1 ;
3435 socklen_t opt_len = sizeof (bool_opt );
35- setsockopt (socket_fd , level , optname , & bool_opt , sizeof (bool_opt ));
36+
37+ ret = setsockopt (socket_fd , level , optname , & bool_opt , sizeof (bool_opt ));
38+ if (ret != 0 )
39+ return !val ;
40+
3641 bool_opt = !bool_opt ;
37- getsockopt (socket_fd , level , optname , & bool_opt , & opt_len );
42+ ret = getsockopt (socket_fd , level , optname , & bool_opt , & opt_len );
43+ if (ret != 0 )
44+ return !val ;
45+
3846 return bool_opt ;
3947}
4048
@@ -77,36 +85,54 @@ main(int argc, char *argv[])
7785
7886 // SO_RCVTIMEO
7987 tv = to_timeval (123 , 1000 );
80- setsockopt (tcp_socket_fd , SOL_SOCKET , SO_RCVTIMEO , & tv , sizeof (tv ));
88+ result =
89+ setsockopt (tcp_socket_fd , SOL_SOCKET , SO_RCVTIMEO , & tv , sizeof (tv ));
90+ OPTION_ASSERT (result , 0 , "setsockopt SO_RCVTIMEO result" )
91+
8192 tv = to_timeval (0 , 0 );
8293 opt_len = sizeof (tv );
83- getsockopt (tcp_socket_fd , SOL_SOCKET , SO_RCVTIMEO , & tv , & opt_len );
94+ result = getsockopt (tcp_socket_fd , SOL_SOCKET , SO_RCVTIMEO , & tv , & opt_len );
95+ OPTION_ASSERT (result , 0 , "getsockopt SO_RCVTIMEO result" )
8496 OPTION_ASSERT (tv .tv_sec , 123 , "SO_RCVTIMEO tv_sec" );
8597 OPTION_ASSERT (tv .tv_usec , 1000 , "SO_RCVTIMEO tv_usec" );
8698
8799 // SO_SNDTIMEO
88100 tv = to_timeval (456 , 2000 );
89- setsockopt (tcp_socket_fd , SOL_SOCKET , SO_SNDTIMEO , & tv , sizeof (tv ));
101+ result =
102+ setsockopt (tcp_socket_fd , SOL_SOCKET , SO_SNDTIMEO , & tv , sizeof (tv ));
103+ OPTION_ASSERT (result , 0 , "setsockopt SO_SNDTIMEO result" )
104+
90105 tv = to_timeval (0 , 0 );
91106 opt_len = sizeof (tv );
92- getsockopt (tcp_socket_fd , SOL_SOCKET , SO_SNDTIMEO , & tv , & opt_len );
107+ result = getsockopt (tcp_socket_fd , SOL_SOCKET , SO_SNDTIMEO , & tv , & opt_len );
108+ OPTION_ASSERT (result , 0 , "getsockopt SO_SNDTIMEO result" )
93109 OPTION_ASSERT (tv .tv_sec , 456 , "SO_SNDTIMEO tv_sec" );
94110 OPTION_ASSERT (tv .tv_usec , 2000 , "SO_SNDTIMEO tv_usec" );
95111
96112 // SO_SNDBUF
97113 buf_len = 8192 ;
98- setsockopt (tcp_socket_fd , SOL_SOCKET , SO_SNDBUF , & buf_len , sizeof (buf_len ));
114+ result = setsockopt (tcp_socket_fd , SOL_SOCKET , SO_SNDBUF , & buf_len ,
115+ sizeof (buf_len ));
116+ OPTION_ASSERT (result , 0 , "setsockopt SO_SNDBUF result" )
117+
99118 buf_len = 0 ;
100119 opt_len = sizeof (buf_len );
101- getsockopt (tcp_socket_fd , SOL_SOCKET , SO_SNDBUF , & buf_len , & opt_len );
120+ result =
121+ getsockopt (tcp_socket_fd , SOL_SOCKET , SO_SNDBUF , & buf_len , & opt_len );
122+ OPTION_ASSERT (result , 0 , "getsockopt SO_SNDBUF result" )
102123 OPTION_ASSERT (buf_len , 16384 , "SO_SNDBUF buf_len" );
103124
104125 // SO_RCVBUF
105126 buf_len = 4096 ;
106- setsockopt (tcp_socket_fd , SOL_SOCKET , SO_RCVBUF , & buf_len , sizeof (buf_len ));
127+ result = setsockopt (tcp_socket_fd , SOL_SOCKET , SO_RCVBUF , & buf_len ,
128+ sizeof (buf_len ));
129+ OPTION_ASSERT (result , 0 , "setsockopt SO_RCVBUF result" )
130+
107131 buf_len = 0 ;
108132 opt_len = sizeof (buf_len );
109- getsockopt (tcp_socket_fd , SOL_SOCKET , SO_RCVBUF , & buf_len , & opt_len );
133+ result =
134+ getsockopt (tcp_socket_fd , SOL_SOCKET , SO_RCVBUF , & buf_len , & opt_len );
135+ OPTION_ASSERT (result , 0 , "getsockopt SO_RCVBUF result" )
110136 OPTION_ASSERT (buf_len , 8192 , "SO_RCVBUF buf_len" );
111137
112138 // SO_KEEPALIVE
@@ -136,12 +162,16 @@ main(int argc, char *argv[])
136162 // SO_LINGER
137163 linger_opt .l_onoff = 1 ;
138164 linger_opt .l_linger = 10 ;
139- setsockopt (tcp_socket_fd , SOL_SOCKET , SO_LINGER , & linger_opt ,
140- sizeof (linger_opt ));
165+ result = setsockopt (tcp_socket_fd , SOL_SOCKET , SO_LINGER , & linger_opt ,
166+ sizeof (linger_opt ));
167+ OPTION_ASSERT (result , 0 , "setsockopt SO_LINGER result" )
168+
141169 linger_opt .l_onoff = 0 ;
142170 linger_opt .l_linger = 0 ;
143171 opt_len = sizeof (linger_opt );
144- getsockopt (tcp_socket_fd , SOL_SOCKET , SO_LINGER , & linger_opt , & opt_len );
172+ result =
173+ getsockopt (tcp_socket_fd , SOL_SOCKET , SO_LINGER , & linger_opt , & opt_len );
174+ OPTION_ASSERT (result , 0 , "getsockopt SO_LINGER result" )
145175 OPTION_ASSERT (linger_opt .l_onoff , 1 , "SO_LINGER l_onoff" );
146176 OPTION_ASSERT (linger_opt .l_linger , 10 , "SO_LINGER l_linger" );
147177
@@ -155,20 +185,28 @@ main(int argc, char *argv[])
155185
156186 // TCP_KEEPIDLE
157187 time_s = 16 ;
158- setsockopt (tcp_socket_fd , IPPROTO_TCP , TCP_KEEPIDLE , & time_s ,
159- sizeof (time_s ));
188+ result = setsockopt (tcp_socket_fd , IPPROTO_TCP , TCP_KEEPIDLE , & time_s ,
189+ sizeof (time_s ));
190+ OPTION_ASSERT (result , 0 , "setsockopt TCP_KEEPIDLE result" )
191+
160192 time_s = 0 ;
161193 opt_len = sizeof (time_s );
162- getsockopt (tcp_socket_fd , IPPROTO_TCP , TCP_KEEPIDLE , & time_s , & opt_len );
194+ result =
195+ getsockopt (tcp_socket_fd , IPPROTO_TCP , TCP_KEEPIDLE , & time_s , & opt_len );
196+ OPTION_ASSERT (result , 0 , "getsockopt TCP_KEEPIDLE result" )
163197 OPTION_ASSERT (time_s , 16 , "TCP_KEEPIDLE" );
164198
165199 // TCP_KEEPINTVL
166200 time_s = 8 ;
167- setsockopt (tcp_socket_fd , IPPROTO_TCP , TCP_KEEPINTVL , & time_s ,
168- sizeof (time_s ));
201+ result = setsockopt (tcp_socket_fd , IPPROTO_TCP , TCP_KEEPINTVL , & time_s ,
202+ sizeof (time_s ));
203+ OPTION_ASSERT (result , 0 , "setsockopt TCP_KEEPINTVL result" )
204+
169205 time_s = 0 ;
170206 opt_len = sizeof (time_s );
171- getsockopt (tcp_socket_fd , IPPROTO_TCP , TCP_KEEPINTVL , & time_s , & opt_len );
207+ result = getsockopt (tcp_socket_fd , IPPROTO_TCP , TCP_KEEPINTVL , & time_s ,
208+ & opt_len );
209+ OPTION_ASSERT (result , 0 , "getsockopt TCP_KEEPINTVL result" )
172210 OPTION_ASSERT (time_s , 8 , "TCP_KEEPINTVL" );
173211
174212 // TCP_FASTOPEN_CONNECT
@@ -197,11 +235,13 @@ main(int argc, char *argv[])
197235
198236 // IP_TTL
199237 ttl = 8 ;
200- setsockopt (tcp_socket_fd , IPPROTO_IP , IP_TTL , & ttl , sizeof (ttl ));
238+ result = setsockopt (tcp_socket_fd , IPPROTO_IP , IP_TTL , & ttl , sizeof (ttl ));
239+ OPTION_ASSERT (result , 0 , "IP_TIL" );
201240 ttl = 0 ;
202241 opt_len = sizeof (ttl );
203- getsockopt (tcp_socket_fd , IPPROTO_IP , IP_TTL , & ttl , & opt_len );
242+ result = getsockopt (tcp_socket_fd , IPPROTO_IP , IP_TTL , & ttl , & opt_len );
204243 OPTION_ASSERT (ttl , 8 , "IP_TTL" );
244+ OPTION_ASSERT (result , 0 , "IP_TIL" );
205245
206246 // IPV6_V6ONLY
207247 OPTION_ASSERT (
@@ -233,11 +273,15 @@ main(int argc, char *argv[])
233273
234274 // IP_MULTICAST_TTL
235275 ttl = 8 ;
236- setsockopt (udp_socket_fd , IPPROTO_IP , IP_MULTICAST_TTL , & ttl , sizeof (ttl ));
276+ result = setsockopt (udp_socket_fd , IPPROTO_IP , IP_MULTICAST_TTL , & ttl ,
277+ sizeof (ttl ));
278+ OPTION_ASSERT (result , 0 , "IP_MULTICAST_TTL" );
237279 ttl = 0 ;
238280 opt_len = sizeof (ttl );
239- getsockopt (udp_socket_fd , IPPROTO_IP , IP_MULTICAST_TTL , & ttl , & opt_len );
281+ result =
282+ getsockopt (udp_socket_fd , IPPROTO_IP , IP_MULTICAST_TTL , & ttl , & opt_len );
240283 OPTION_ASSERT (ttl , 8 , "IP_MULTICAST_TTL" );
284+ OPTION_ASSERT (result , 0 , "IP_MULTICAST_TTL" );
241285
242286 // IPV6_MULTICAST_LOOP
243287 OPTION_ASSERT (set_and_get_bool_opt (udp_ipv6_socket_fd , IPPROTO_IPV6 ,
@@ -248,12 +292,14 @@ main(int argc, char *argv[])
248292 0 , "IPV6_MULTICAST_LOOP disabled" );
249293
250294 // IPV6_JOIN_GROUP
251- setsockopt (udp_ipv6_socket_fd , IPPROTO_IPV6 , IPV6_JOIN_GROUP , & mcast_ipv6 ,
252- sizeof (mcast_ipv6 ));
295+ result = setsockopt (udp_ipv6_socket_fd , IPPROTO_IPV6 , IPV6_JOIN_GROUP ,
296+ & mcast_ipv6 , sizeof (mcast_ipv6 ));
297+ OPTION_ASSERT (result , 0 , "IPV6_JOIN_GROUP" );
253298
254299 // IPV6_LEAVE_GROUP
255- setsockopt (udp_ipv6_socket_fd , IPPROTO_IPV6 , IPV6_LEAVE_GROUP , & mcast_ipv6 ,
256- sizeof (mcast_ipv6 ));
300+ result = setsockopt (udp_ipv6_socket_fd , IPPROTO_IPV6 , IPV6_LEAVE_GROUP ,
301+ & mcast_ipv6 , sizeof (mcast_ipv6 ));
302+ OPTION_ASSERT (result , 0 , "IPV6_JOIN_GROUP" );
257303
258304 printf ("[Client] Close sockets\n" );
259305 close (tcp_socket_fd );
0 commit comments