aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
authorDavid M. Syzdek <david.syzdek@acsalaska.com>2020-01-30 13:52:35 -0900
committerDavid M. Syzdek <david.syzdek@acsalaska.com>2020-01-30 13:52:35 -0900
commite5ab3b17fc998681883f3878e40e06911eb722d4 (patch)
tree0b99094bd1de54b0d7decb3f89b71afade539213 /src
parent2bd852254e2afcd940e3166f5628e9f6f2f4ce95 (diff)
downloadakcom-udpecho-e5ab3b17fc998681883f3878e40e06911eb722d4.tar.gz
akcom-udpecho-e5ab3b17fc998681883f3878e40e06911eb722d4.tar.bz2
akcom-udpecho-e5ab3b17fc998681883f3878e40e06911eb722d4.tar.xz
akcom-udpecho-e5ab3b17fc998681883f3878e40e06911eb722d4.zip
fixing casting between variables
Diffstat (limited to 'src')
-rw-r--r--src/akcom-udpechod.c49
1 files changed, 35 insertions, 14 deletions
diff --git a/src/akcom-udpechod.c b/src/akcom-udpechod.c
index 016cf0c..d195ddd 100644
--- a/src/akcom-udpechod.c
+++ b/src/akcom-udpechod.c
@@ -354,11 +354,13 @@ int my_daemonize(void)
354 char buff[512]; 354 char buff[512];
355 pid_t pid; 355 pid_t pid;
356 pid_t oldpid; 356 pid_t oldpid;
357 short port;
357 FILE * fs; 358 FILE * fs;
358 struct stat sb; 359 struct stat sb;
359 union 360 union
360 { 361 {
361 struct sockaddr sa; 362 struct sockaddr sa;
363 struct sockaddr_in s4;
362 struct sockaddr_in6 s6; 364 struct sockaddr_in6 s6;
363 struct sockaddr_storage ss; 365 struct sockaddr_storage ss;
364 } sin; 366 } sin;
@@ -470,8 +472,27 @@ int my_daemonize(void)
470 unlink(cnf.pidfile); 472 unlink(cnf.pidfile);
471 return(-1); 473 return(-1);
472 }; 474 };
473 inet_ntop(sin.sa.sa_family, &sin, buff, sizeof(buff)); 475 switch(sin.ss.ss_family)
474 syslog(LOG_INFO, "listening on [%s]:%i", buff, cnf.port); 476 {
477 case AF_INET:
478 inet_ntop(sin.sa.sa_family, &sin.s4.sin_addr, buff, sizeof(buff));
479 port = ntohs(sin.s4.sin_port);
480 break;
481
482 case AF_INET6:
483 inet_ntop(sin.sa.sa_family, &sin.s6.sin6_addr, buff, sizeof(buff));
484 port = ntohs(sin.s6.sin6_port);
485 break;
486
487 default:
488 syslog(LOG_ERR, "listening socket has invalid address family: %i\n", sin.sa.sa_family);
489 close(s);
490 close(fd);
491 unlink(cnf.pidfile);
492 return(-1);
493 break;
494 };
495 syslog(LOG_INFO, "listening on [%s]:%hu", buff, port);
475 496
476 // fork process 497 // fork process
477 if ((cnf.dont_fork)) 498 if ((cnf.dont_fork))
@@ -535,7 +556,7 @@ int my_loop(int s, size_t * connp)
535 union 556 union
536 { 557 {
537 char bytes[MY_BUFF_SIZE]; 558 char bytes[MY_BUFF_SIZE];
538 struct udp_echo_plus * msg; 559 struct udp_echo_plus msg;
539 } udpbuff; 560 } udpbuff;
540 561
541 // setup poller 562 // setup poller
@@ -566,13 +587,13 @@ int my_loop(int s, size_t * connp)
566 { 587 {
567 case AF_INET: 588 case AF_INET:
568 syslog(LOG_DEBUG, "conn %zu: processing client IPv4 address", *connp); 589 syslog(LOG_DEBUG, "conn %zu: processing client IPv4 address", *connp);
569 inet_ntop(AF_INET, &sin.s4, addr_str, sizeof(addr_str)); 590 inet_ntop(AF_INET, &sin.s4.sin_addr, addr_str, sizeof(addr_str));
570 port = ntohs(sin.s4.sin_port); 591 port = ntohs(sin.s4.sin_port);
571 break; 592 break;
572 593
573 case AF_INET6: 594 case AF_INET6:
574 syslog(LOG_DEBUG, "conn %zu: processing client IPv6 address", *connp); 595 syslog(LOG_DEBUG, "conn %zu: processing client IPv6 address", *connp);
575 inet_ntop(AF_INET6, &sin.s6, addr_str, sizeof(addr_str)); 596 inet_ntop(AF_INET6, &sin.s6.sin6_addr, addr_str, sizeof(addr_str));
576 port = ntohs(sin.s6.sin6_port); 597 port = ntohs(sin.s6.sin6_port);
577 break; 598 break;
578 599
@@ -585,18 +606,18 @@ int my_loop(int s, size_t * connp)
585 if ((cnf.echoplus)) 606 if ((cnf.echoplus))
586 { 607 {
587 syslog(LOG_DEBUG, "conn %zu: intializing echo plus header", *connp); 608 syslog(LOG_DEBUG, "conn %zu: intializing echo plus header", *connp);
588 udpbuff.msg->res_sn = udpbuff.msg->req_sn; 609 udpbuff.msg.res_sn = udpbuff.msg.req_sn;
589 udpbuff.msg->recv_time = htonl(ms & 0xFFFFFFFFLL); 610 udpbuff.msg.recv_time = htonl(ms & 0xFFFFFFFFLL);
590 udpbuff.msg->failures = 0; 611 udpbuff.msg.failures = 0;
591 }; 612 };
592 syslog(LOG_INFO, 613 syslog(LOG_INFO,
593 "client: [%s]:%i; recv bytes: %zi; timestamp: %lu.%09lu; seq: %u;", 614 "client: [%s]:%hu; recv bytes: %zi; timestamp: %lu.%09lu; seq: %u;",
594 addr_str, 615 addr_str,
595 port, 616 port,
596 ssize, 617 ssize,
597 ts.tv_sec, 618 ts.tv_sec,
598 ts.tv_nsec, 619 ts.tv_nsec,
599 (((cnf.echoplus)) ? ntohl(udpbuff.msg->req_sn) : 0) 620 (((cnf.echoplus)) ? ntohl(udpbuff.msg.req_sn) : 0)
600 ); 621 );
601 622
602 // randomly drop packets 623 // randomly drop packets
@@ -604,7 +625,7 @@ int my_loop(int s, size_t * connp)
604 { 625 {
605 if ( (rand() % 100) < cnf.drop_perct) 626 if ( (rand() % 100) < cnf.drop_perct)
606 { 627 {
607 syslog(LOG_INFO, "client: [%s]:%i; dropping echo request", addr_str, port); 628 syslog(LOG_INFO, "client: [%s]:%hu; dropping echo request", addr_str, port);
608 return(0); 629 return(0);
609 }; 630 };
610 }; 631 };
@@ -629,17 +650,17 @@ int my_loop(int s, size_t * connp)
629 if ((cnf.echoplus)) 650 if ((cnf.echoplus))
630 { 651 {
631 syslog(LOG_DEBUG, "conn %zu: updating echo plus header", *connp); 652 syslog(LOG_DEBUG, "conn %zu: updating echo plus header", *connp);
632 udpbuff.msg->reply_time = htonl(ms & 0xFFFFFFFFLL); 653 udpbuff.msg.reply_time = htonl(ms & 0xFFFFFFFFLL);
633 }; 654 };
634 sendto(s, udpbuff.bytes, ssize, 0, &sin.sa, sinlen); 655 sendto(s, udpbuff.bytes, ssize, 0, &sin.sa, sinlen);
635 syslog(LOG_INFO, 656 syslog(LOG_INFO,
636 "client: [%s]:%i; sent bytes: %zi; timestamp: %lu.%09lu; seq: %u; delay: %u usec;", 657 "client: [%s]:%hu; sent bytes: %zi; timestamp: %lu.%09lu; seq: %u; delay: %u usec;",
637 addr_str, 658 addr_str,
638 port, 659 port,
639 ssize, 660 ssize,
640 ts.tv_sec, 661 ts.tv_sec,
641 ts.tv_nsec, 662 ts.tv_nsec,
642 (((cnf.echoplus)) ? ntohl(udpbuff.msg->req_sn) : 0), 663 (((cnf.echoplus)) ? ntohl(udpbuff.msg.req_sn) : 0),
643 delay 664 delay
644 ); 665 );
645 666