diff options
| author | David M. Syzdek <david.syzdek@acsalaska.com> | 2020-01-30 13:52:35 -0900 |
|---|---|---|
| committer | David M. Syzdek <david.syzdek@acsalaska.com> | 2020-01-30 13:52:35 -0900 |
| commit | e5ab3b17fc998681883f3878e40e06911eb722d4 (patch) | |
| tree | 0b99094bd1de54b0d7decb3f89b71afade539213 /src | |
| parent | 2bd852254e2afcd940e3166f5628e9f6f2f4ce95 (diff) | |
| download | akcom-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.c | 49 |
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 | ||
