aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/examples
diff options
context:
space:
mode:
authorDavid M. Syzdek <david@syzdek.net>2022-01-21 23:15:16 -0900
committerDavid M. Syzdek <david@syzdek.net>2022-01-21 23:15:16 -0900
commit919d83cd51fe4328a012a4326cc48f3098099535 (patch)
tree07cd913ad30e40b01d29d4fa08f19ca2ba18a49a /examples
parent5b5916b62176be35c08be74962635b2abc8f5dd3 (diff)
downloadtinyrad-919d83cd51fe4328a012a4326cc48f3098099535.tar.gz
tinyrad-919d83cd51fe4328a012a4326cc48f3098099535.tar.bz2
tinyrad-919d83cd51fe4328a012a4326cc48f3098099535.tar.xz
tinyrad-919d83cd51fe4328a012a4326cc48f3098099535.zip
examples: replacing ss_len
Diffstat (limited to 'examples')
-rw-r--r--examples/socket-example.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/examples/socket-example.c b/examples/socket-example.c
index b278c07..547df45 100644
--- a/examples/socket-example.c
+++ b/examples/socket-example.c
@@ -108,7 +108,7 @@ static int should_exit = 0;
108 108
109int main( int argc, char * argv[] ); 109int main( int argc, char * argv[] );
110 110
111int my_client( int s, unsigned opts, struct sockaddr_storage * sap ); 111int my_client( int s, unsigned opts, struct sockaddr_storage * sap, socklen_t sa_len );
112void my_connlog( unsigned opts, const struct sockaddr_storage * sa, const char * fmt, ...); 112void my_connlog( unsigned opts, const struct sockaddr_storage * sa, const char * fmt, ...);
113int my_error( const char * fmt, ...); 113int my_error( const char * fmt, ...);
114char * my_ntop(const struct sockaddr_storage * sa, char * buff, size_t len); 114char * my_ntop(const struct sockaddr_storage * sa, char * buff, size_t len);
@@ -143,6 +143,8 @@ int main(int argc, char * argv[])
143 struct addrinfo * res; 143 struct addrinfo * res;
144 struct sockaddr_storage lsa; 144 struct sockaddr_storage lsa;
145 struct sockaddr_storage sa; 145 struct sockaddr_storage sa;
146 socklen_t lsa_len;
147 socklen_t sa_len;
146 char host[INET6_ADDRSTRLEN+INET_ADDRSTRLEN]; 148 char host[INET6_ADDRSTRLEN+INET_ADDRSTRLEN];
147 149
148 // getopt options 150 // getopt options
@@ -249,6 +251,8 @@ int main(int argc, char * argv[])
249 signal(SIGUSR2, SIG_IGN); 251 signal(SIGUSR2, SIG_IGN);
250 252
251 // resolve remote host 253 // resolve remote host
254 bzero(&sa, sizeof(sa));
255 sa_len = 0;
252 if ((optind + 1) == argc) 256 if ((optind + 1) == argc)
253 { 257 {
254 my_verbose(opts, "resolving remote host \"%s\" port \"%s\" ...", argv[optind], port); 258 my_verbose(opts, "resolving remote host \"%s\" port \"%s\" ...", argv[optind], port);
@@ -263,6 +267,7 @@ int main(int argc, char * argv[])
263 rinfo.ai_family = res->ai_family; 267 rinfo.ai_family = res->ai_family;
264 bzero(&sa, sizeof(sa)); 268 bzero(&sa, sizeof(sa));
265 memcpy(&sa, res->ai_addr, res->ai_addrlen); 269 memcpy(&sa, res->ai_addr, res->ai_addrlen);
270 sa_len = res->ai_addrlen;
266 freeaddrinfo(res); 271 freeaddrinfo(res);
267 if (!(laddr)) 272 if (!(laddr))
268 laddr = (sa.ss_family == AF_INET) ? "0.0.0.0" : "::"; 273 laddr = (sa.ss_family == AF_INET) ? "0.0.0.0" : "::";
@@ -280,6 +285,7 @@ int main(int argc, char * argv[])
280 }; 285 };
281 bzero(&lsa, sizeof(lsa)); 286 bzero(&lsa, sizeof(lsa));
282 memcpy(&lsa, res->ai_addr, res->ai_addrlen); 287 memcpy(&lsa, res->ai_addr, res->ai_addrlen);
288 lsa_len = res->ai_addrlen;
283 freeaddrinfo(res); 289 freeaddrinfo(res);
284 290
285 // create socket 291 // create socket
@@ -303,22 +309,21 @@ int main(int argc, char * argv[])
303 309
304 // bind to local address 310 // bind to local address
305 my_verbose(opts, "binding to \"%s\" ...", my_ntop(&lsa, host, sizeof(host))); 311 my_verbose(opts, "binding to \"%s\" ...", my_ntop(&lsa, host, sizeof(host)));
306 if (bind(s, (struct sockaddr *)&lsa, lsa.ss_len) == -1) 312 if (bind(s, (struct sockaddr *)&lsa, lsa_len) == -1)
307 { 313 {
308 my_error("bind(): %s\n", strerror(errno)); 314 my_error("bind(): %s\n", strerror(errno));
309 close(s); 315 close(s);
310 return(1); 316 return(1);
311 }; 317 };
312 318
313 return(((opts & MY_SERVER)) ? my_server(s, opts) : my_client(s, opts, &sa)); 319 return(((opts & MY_SERVER)) ? my_server(s, opts) : my_client(s, opts, &sa, sa_len));
314} 320}
315 321
316 322
317int my_client( int s, unsigned opts, struct sockaddr_storage * sap ) 323int my_client( int s, unsigned opts, struct sockaddr_storage * sap, socklen_t sa_len )
318{ 324{
319 struct pollfd fds[2]; 325 struct pollfd fds[2];
320 struct sockaddr_storage sa; 326 struct sockaddr_storage sa;
321 socklen_t sa_len;
322 char buff[4096]; 327 char buff[4096];
323 ssize_t len; 328 ssize_t len;
324 329
@@ -331,7 +336,7 @@ int my_client( int s, unsigned opts, struct sockaddr_storage * sap )
331 336
332 // connects to remote host 337 // connects to remote host
333 my_verbose(opts, "connecting to \"%s\" ...", my_ntop(sap, buff, sizeof(buff))); 338 my_verbose(opts, "connecting to \"%s\" ...", my_ntop(sap, buff, sizeof(buff)));
334 if (connect(s, (struct sockaddr *)sap, sap->ss_len) == -1) 339 if (connect(s, (struct sockaddr *)sap, sa_len) == -1)
335 { 340 {
336 my_error("connect(): %s\n", strerror(errno)); 341 my_error("connect(): %s\n", strerror(errno));
337 close(s); 342 close(s);