From: Laurent MAZET Date: Tue, 7 Oct 2025 17:29:11 +0000 (+0200) Subject: desactivate rrt tests X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=2a3961074ef893d26d9f7fa1c7cea24f3187b3cd;p=benchmarks.git desactivate rrt tests --- diff --git a/attic/mq_rtt.c b/attic/mq_rtt.c new file mode 100644 index 0000000..5f4ad41 --- /dev/null +++ b/attic/mq_rtt.c @@ -0,0 +1,133 @@ +/* depend: */ +/* cflags: */ +/* linker: msg.o mtime.o test.o stat.o -lm -lrt */ + +#include +#include +#include + +#include /* For O_* constants */ +#include /* For mode constants */ +#include + +#include +#include +#include + +#include "msg.h" +#include "mtime.h" +#include "test.h" + +/* global variables */ + +dts_t *deltas = NULL; +int nb_measurements = 0; + +char *message = "Message queue RTT"; +void (*usage_ext) (FILE *) = NULL; +int (*parse_arg_ext) (char *) = NULL; + +#define MSGLEN 128 +#define MAXBUF 1024 + +int ping (mqd_t mq) +{ + + printf ("Sending ping...\n"); + for (int i = 0; i < nb_measurements; i++) { + + char *msg = get_msg (MSGLEN); + char buffer[MAXBUF] = { 0 }; + + ts_t ts1; + sys_timestamp (&ts1); + + if (mq_send (mq, msg, MSGLEN, 0) == -1) { + fprintf (stderr, "ping error: mq_send (%d)\n", i); + return 1; + } + //printf ("send '%s'\n", buffer); + + if (mq_receive (mq, buffer, sizeof(buffer) - 1, NULL) == -1) { + fprintf (stderr, "ping error: mq_receive (%d)\n", i); + return 1; + } + //printf ("receive '%s'\n", buffer); + + ts_t ts2; + sys_timestamp (&ts2); + deltas[i] = diff_timestamp (&ts2, &ts1); + } + + return 0; +} + +int pong (mqd_t mq) +{ + + printf ("Responding pong...\n"); + for (int i = 0; i < nb_measurements; i++) { + + char *msg = get_msg (MSGLEN); + char buffer[MAXBUF] = { 0 }; + + if (mq_receive (mq, buffer, sizeof(buffer) - 1, NULL) == -1) { + fprintf (stderr, "pong error: mq_receive (%d)\n", i); + return 1; + } + //printf ("receive '%s'\n", buffer); + + if (mq_send (mq, msg, MSGLEN, 0) == -1) { + fprintf (stderr, "pong error: mq_send (%d)\n", i); + return 1; + } + //printf ("send '%s'\n", buffer); + } + + return 0; +} + +int test (dts_t *buffer, int nb) +{ + + /* set global variables */ + + deltas = buffer; + nb_measurements = nb; + + /* mq rtt test */ + + struct mq_attr attr; + attr.mq_flags = 0; + attr.mq_maxmsg = 5; + attr.mq_msgsize = MAXBUF; + attr.mq_curmsgs = 0; + + mqd_t mq = mq_open ("/test_queue", O_CREAT | O_RDWR, 0644, &attr); + if (mq == -1) { + fprintf (stderr, "error: mq_open\n"); + return 1; + } + + pid_t pid = fork (); + if (pid == -1) { + fprintf (stderr, "error: fork\n"); + return 1; + } else if (pid == 0) { + int rc = pong (mq); + mq_close (mq); + exit (rc); + } + + int rc = ping (mq); + mq_close (mq); + + if (kill (pid, SIGTERM) == 0) { + int wstatus; + if (waitpid (pid, &wstatus, WUNTRACED | WCONTINUED) == -1) { + fprintf (stderr, "error: waitpid\n"); + } + } + + return rc; +} diff --git a/attic/pipe_rtt.c b/attic/pipe_rtt.c new file mode 100644 index 0000000..553f579 --- /dev/null +++ b/attic/pipe_rtt.c @@ -0,0 +1,126 @@ +/* depend: */ +/* cflags: */ +/* linker: msg.o mtime.o test.o stat.o -lm -lrt */ + +#include +#include +#include + +#include +#include +#include + +#include "msg.h" +#include "mtime.h" +#include "test.h" + +/* global variables */ + +dts_t *deltas = NULL; +int nb_measurements = 0; + +char *message = "Pipe RTT"; +void (*usage_ext) (FILE *) = NULL; +int (*parse_arg_ext) (char *) = NULL; + +#define MSGLEN 128 +#define MAXBUF 1024 + +int ping (int fdin, int fdout) +{ + + printf ("Sending ping...\n"); + for (int i = 0; i < nb_measurements; i++) { + + char *msg = get_msg (MSGLEN); + char buffer[MAXBUF] = { 0 }; + + ts_t ts1; + sys_timestamp (&ts1); + + if (write (fdout, msg, MSGLEN) == -1) { + fprintf (stderr, "ping error: write (%d)\n", i); + return 1; + } + //printf ("write '%s'\n", buffer); + + if (read (fdin, buffer, sizeof(buffer) - 1) == -1) { + fprintf (stderr, "ping error: read (%d)\n", i); + return 1; + } + //printf ("read '%s'\n", buffer); + + ts_t ts2; + sys_timestamp (&ts2); + deltas[i] = diff_timestamp (&ts2, &ts1); + } + + return 0; +} + +int pong (int fdin, int fdout) +{ + + printf ("Responding pong...\n"); + for (int i = 0; i < nb_measurements; i++) { + + char *msg = get_msg (MSGLEN); + char buffer[MAXBUF] = { 0 }; + + if (read (fdin, buffer, sizeof(buffer) - 1) == -1) { + fprintf (stderr, "pong error: read (%d)\n", i); + return 1; + } + //printf ("read '%s'\n", buffer); + + if (write (fdout, msg, MSGLEN) == -1) { + fprintf (stderr, "pong error: write (%d)\n", i); + return 1; + } + //printf ("write '%s'\n", buffer); + } + + return 0; +} + +int test (dts_t *buffer, int nb) +{ + + /* set global variables */ + + deltas = buffer; + nb_measurements = nb; + + /* pipe test */ + + int pipefd[2] = { 0 }; + + if (pipe (pipefd) == -1) { + fprintf (stderr, "error: pipe\n"); + return 1; + } + + pid_t pid = fork (); + if (pid == -1) { + fprintf (stderr, "error: fork\n"); + return 1; + } else if (pid == 0) { + int rc = pong (pipefd[0], pipefd[1]); + close (pipefd[0]); + close (pipefd[1]); + exit (rc); + } + + int rc = ping (pipefd[0], pipefd[1]); + close (pipefd[0]); + close (pipefd[1]); + + if (kill (pid, SIGTERM) == 0) { + int wstatus; + if (waitpid (pid, &wstatus, WUNTRACED | WCONTINUED) == -1) { + fprintf (stderr, "error: waitpid\n"); + } + } + + return rc; +} diff --git a/attic/udp_rtt.c b/attic/udp_rtt.c new file mode 100644 index 0000000..cbb545c --- /dev/null +++ b/attic/udp_rtt.c @@ -0,0 +1,219 @@ +/* depend: */ +/* cflags: */ +/* linker: msg.o mtime.o test.o stat.o -lm -lrt */ + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include "msg.h" +#include "mtime.h" +#include "test.h" + +/* global variables */ + +dts_t *deltas = NULL; +int nb_measurements = 0; + +char *local_host = "localhost"; +int local_port = 1024; +char *remote_host = "localhost"; +int remote_port = 1025; +int mode = 0; + +char *message = "UDP socket RTT"; + +void _usage_ext (FILE *fd) +{ + fprintf (fd, "... lhost lport rhost rport [mode]\n"); + fprintf (fd, " lhost: local host name (%s)\n", local_host); + fprintf (fd, " lport: local port number (%d)\n", local_port); + fprintf (fd, " rhost: remote host name (%s)\n", remote_host); + fprintf (fd, " rport: remote port number (%d)\n", remote_port); + fprintf (fd, " mode: 0 for ping-pong, 1 for ping, 2 for pong (%d)\n", mode); +} +void (*usage_ext) (FILE *) = _usage_ext; + +int _parse_arg_ext (char *arg) +{ + static int narg = 0; + + int rc = 0; + switch (narg) { + case 0: local_host= arg; break; + case 1: local_port = atoi (arg); if (local_port < 0) rc = 1; break; + case 2: remote_host = arg; break; + case 3: remote_port = atoi (arg); if (remote_port < 0) rc = 1; break; + case 4: mode = atoi (arg); break; + default: rc = 1; + } + narg++; + + return rc; +} +int (*parse_arg_ext) (char *) = _parse_arg_ext; + +#define MSGLEN 128 +#define MAXBUF 1024 + +int ping (int local_port, int remote_addr, int remote_port) +{ + + int sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); + if (sock == -1) { + fprintf (stderr, "ping error: socket\n"); + return 1; + } + + struct sockaddr_in local = { 0 }; + local.sin_family = AF_INET; + local.sin_port = htons (local_port); + local.sin_addr.s_addr = htonl (INADDR_ANY); + + if (bind (sock, (struct sockaddr *)&local, sizeof (local)) == -1) { + fprintf (stderr, "ping error: bind\n"); + return 1; + } + + struct sockaddr_in remote = { 0 }; + remote.sin_family = AF_INET; + remote.sin_port = htons (remote_port); + remote.sin_addr.s_addr = htonl (remote_addr); + + printf ("Sending ping...\n"); + for (int i = 0; i < nb_measurements; i++) { + + char *msg = get_msg (MSGLEN); + char buffer[MAXBUF] = { 0 }; + + ts_t ts1; + sys_timestamp (&ts1); + + if (sendto (sock, msg, MSGLEN, 0, (struct sockaddr *)&remote, sizeof (remote)) == -1) { + fprintf (stderr, "ping error: sendto (%d)\n", i); + return 1; + } + //printf ("sendto '%s'\n", buffer); + + int len = recv (sock, buffer, sizeof (buffer) - 1, 0); + if (len == -1) { + fprintf (stderr, "ping error: recv_from (%d)\n", i); + return 1; + } + //printf ("recv_from '%s'\n", buffer); + + ts_t ts2; + sys_timestamp (&ts2); + deltas[i] = diff_timestamp (&ts2, &ts1); + } + + close (sock); + + return 0; +} + +int pong (int local_port, int remote_addr, int remote_port) +{ + + int sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); + if (sock == -1) { + fprintf (stderr, "pong error: socket\n"); + return 1; + } + + struct sockaddr_in local = { 0 }; + local.sin_family = AF_INET; + local.sin_port = htons (local_port); + local.sin_addr.s_addr = htonl (INADDR_ANY); + + if (bind (sock, (struct sockaddr *)&local, sizeof (local)) == -1) { + fprintf (stderr, "pong error: bind\n"); + return 1; + } + + struct sockaddr_in remote = { 0 }; + remote.sin_family = AF_INET; + remote.sin_port = htons (remote_port); + remote.sin_addr.s_addr = htonl (remote_addr); + + printf ("Sending pong...\n"); + for (int i = 0; i < nb_measurements; i++) { + + char *msg = get_msg (MSGLEN); + char buffer[MAXBUF] = { 0 }; + + int len = recv (sock, buffer, sizeof (buffer) - 1, 0); + if (len == -1) { + fprintf (stderr, "pong error: recv_from (%d)\n", i); + return 1; + } + //printf ("recv_from '%s'\n", buffer); + + if (sendto (sock, msg, MSGLEN, 0, (struct sockaddr *)&remote, sizeof (remote)) == -1) { + fprintf (stderr, "pong error: sendto (%d)\n", i); + return 1; + } + //printf ("sendto '%s'\n", buffer); + } + + close (sock); + + return 0; +} + +int get_ip (char *hostname) { + struct hostent *he = gethostbyname (hostname); + if (he == NULL) { + fprintf (stderr, "error: gethostbyname (%s)\n", hostname); + return -1; + } + struct in_addr **addr_list = (struct in_addr **) he->h_addr_list; + return ntohl (addr_list[0]->s_addr); +} + +int test (dts_t *buffer, int nb) +{ + + /* set global variables */ + + deltas = buffer; + nb_measurements = nb; + + /* udp socket test */ + int local_ip = get_ip (local_host); + if (local_ip == -1) { + return 1; + } + int remote_ip = get_ip (remote_host); + if (remote_ip == -1) { + return 1; + } + + pid_t pid = (mode == 0 ) ? fork () : -2; + if (pid == -1) { + fprintf (stderr, "error: fork\n"); + return 1; + } else if ((pid == 0) || (mode == 2)) { + int rc = pong (remote_port, local_ip, local_port); + exit (rc); + } + + int rc = ping (local_port, remote_ip, remote_port); + + if ((pid > 0) && (kill (pid, SIGTERM) == 0)) { + int wstatus; + if (waitpid (pid, &wstatus, WUNTRACED | WCONTINUED) == -1) { + fprintf (stderr, "error: waitpid\n"); + } + } + + return rc; +} diff --git a/mq_rtt.c b/mq_rtt.c deleted file mode 100644 index 5f4ad41..0000000 --- a/mq_rtt.c +++ /dev/null @@ -1,133 +0,0 @@ -/* depend: */ -/* cflags: */ -/* linker: msg.o mtime.o test.o stat.o -lm -lrt */ - -#include -#include -#include - -#include /* For O_* constants */ -#include /* For mode constants */ -#include - -#include -#include -#include - -#include "msg.h" -#include "mtime.h" -#include "test.h" - -/* global variables */ - -dts_t *deltas = NULL; -int nb_measurements = 0; - -char *message = "Message queue RTT"; -void (*usage_ext) (FILE *) = NULL; -int (*parse_arg_ext) (char *) = NULL; - -#define MSGLEN 128 -#define MAXBUF 1024 - -int ping (mqd_t mq) -{ - - printf ("Sending ping...\n"); - for (int i = 0; i < nb_measurements; i++) { - - char *msg = get_msg (MSGLEN); - char buffer[MAXBUF] = { 0 }; - - ts_t ts1; - sys_timestamp (&ts1); - - if (mq_send (mq, msg, MSGLEN, 0) == -1) { - fprintf (stderr, "ping error: mq_send (%d)\n", i); - return 1; - } - //printf ("send '%s'\n", buffer); - - if (mq_receive (mq, buffer, sizeof(buffer) - 1, NULL) == -1) { - fprintf (stderr, "ping error: mq_receive (%d)\n", i); - return 1; - } - //printf ("receive '%s'\n", buffer); - - ts_t ts2; - sys_timestamp (&ts2); - deltas[i] = diff_timestamp (&ts2, &ts1); - } - - return 0; -} - -int pong (mqd_t mq) -{ - - printf ("Responding pong...\n"); - for (int i = 0; i < nb_measurements; i++) { - - char *msg = get_msg (MSGLEN); - char buffer[MAXBUF] = { 0 }; - - if (mq_receive (mq, buffer, sizeof(buffer) - 1, NULL) == -1) { - fprintf (stderr, "pong error: mq_receive (%d)\n", i); - return 1; - } - //printf ("receive '%s'\n", buffer); - - if (mq_send (mq, msg, MSGLEN, 0) == -1) { - fprintf (stderr, "pong error: mq_send (%d)\n", i); - return 1; - } - //printf ("send '%s'\n", buffer); - } - - return 0; -} - -int test (dts_t *buffer, int nb) -{ - - /* set global variables */ - - deltas = buffer; - nb_measurements = nb; - - /* mq rtt test */ - - struct mq_attr attr; - attr.mq_flags = 0; - attr.mq_maxmsg = 5; - attr.mq_msgsize = MAXBUF; - attr.mq_curmsgs = 0; - - mqd_t mq = mq_open ("/test_queue", O_CREAT | O_RDWR, 0644, &attr); - if (mq == -1) { - fprintf (stderr, "error: mq_open\n"); - return 1; - } - - pid_t pid = fork (); - if (pid == -1) { - fprintf (stderr, "error: fork\n"); - return 1; - } else if (pid == 0) { - int rc = pong (mq); - mq_close (mq); - exit (rc); - } - - int rc = ping (mq); - mq_close (mq); - - if (kill (pid, SIGTERM) == 0) { - int wstatus; - if (waitpid (pid, &wstatus, WUNTRACED | WCONTINUED) == -1) { - fprintf (stderr, "error: waitpid\n"); - } - } - - return rc; -} diff --git a/pipe_rtt.c b/pipe_rtt.c deleted file mode 100644 index 29a365d..0000000 --- a/pipe_rtt.c +++ /dev/null @@ -1,126 +0,0 @@ -/* depend: */ -/* cflags: */ -/* linker: msg.o mtime.o test.o stat.o -lm -lrt */ - -#include -#include -#include - -#include -#include -#include - -#include "msg.h" -#include "mtime.h" -#include "test.h" - -/* global variables */ - -dts_t *deltas = NULL; -int nb_measurements = 0; - -char *message = "Pipe RTT"; -void (*usage_ext) (FILE *) = NULL; -int (*parse_arg_ext) (char *) = NULL; - -#define MSGLEN 128 -#define MAXBUF 1024 - -int ping (int fdin, int fdout) -{ - - printf ("Sending ping...\n"); - for (int i = 0; i < nb_measurements; i++) { - - char *msg = get_msg (MSGLEN); - char buffer[MAXBUF] = { 0 }; - - ts_t ts1; - sys_timestamp (&ts1); - - if (write (fdout, msg, MSGLEN) == -1) { - fprintf (stderr, "ping error: write (%d)\n", i); - return 1; - } - //printf ("write '%s'\n", buffer); - - if (read (fdin, buffer, sizeof(buffer) - 1) == -1) { - fprintf (stderr, "ping error: read (%d)\n", i); - return 1; - } - //printf ("read '%s'\n", buffer); - - ts_t ts2; - sys_timestamp (&ts2); - deltas[i] = diff_timestamp (&ts2, &ts1); - } - - return 0; -} - -int pong (int fdin, int fdout) -{ - - printf ("Responding pong...\n"); - for (int i = 0; i < nb_measurements; i++) { - - char *msg = get_msg (MSGLEN); - char buffer[MAXBUF] = { 0 }; - - if (read (fdin, buffer, sizeof(buffer) - 1) == -1) { - fprintf (stderr, "ping error: read (%d)\n", i); - return 1; - } - //printf ("read '%s'\n", buffer); - - if (write (fdout, msg, MSGLEN) == -1) { - fprintf (stderr, "ping error: write (%d)\n", i); - return 1; - } - //printf ("write '%s'\n", buffer); - } - - return 0; -} - -int test (dts_t *buffer, int nb) -{ - - /* set global variables */ - - deltas = buffer; - nb_measurements = nb; - - /* pipe test */ - - int pipefd[2] = { 0 }; - - if (pipe (pipefd) == -1) { - fprintf (stderr, "error: pipe\n"); - return 1; - } - - pid_t pid = fork (); - if (pid == -1) { - fprintf (stderr, "error: fork\n"); - return 1; - } else if (pid == 0) { - int rc = pong (pipefd[0], pipefd[1]); - close (pipefd[0]); - close (pipefd[1]); - exit (rc); - } - - int rc = ping (pipefd[0], pipefd[1]); - close (pipefd[0]); - close (pipefd[1]); - - if (kill (pid, SIGTERM) == 0) { - int wstatus; - if (waitpid (pid, &wstatus, WUNTRACED | WCONTINUED) == -1) { - fprintf (stderr, "error: waitpid\n"); - } - } - - return rc; -} diff --git a/udp_rtt.c b/udp_rtt.c deleted file mode 100644 index cbb545c..0000000 --- a/udp_rtt.c +++ /dev/null @@ -1,219 +0,0 @@ -/* depend: */ -/* cflags: */ -/* linker: msg.o mtime.o test.o stat.o -lm -lrt */ - -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include "msg.h" -#include "mtime.h" -#include "test.h" - -/* global variables */ - -dts_t *deltas = NULL; -int nb_measurements = 0; - -char *local_host = "localhost"; -int local_port = 1024; -char *remote_host = "localhost"; -int remote_port = 1025; -int mode = 0; - -char *message = "UDP socket RTT"; - -void _usage_ext (FILE *fd) -{ - fprintf (fd, "... lhost lport rhost rport [mode]\n"); - fprintf (fd, " lhost: local host name (%s)\n", local_host); - fprintf (fd, " lport: local port number (%d)\n", local_port); - fprintf (fd, " rhost: remote host name (%s)\n", remote_host); - fprintf (fd, " rport: remote port number (%d)\n", remote_port); - fprintf (fd, " mode: 0 for ping-pong, 1 for ping, 2 for pong (%d)\n", mode); -} -void (*usage_ext) (FILE *) = _usage_ext; - -int _parse_arg_ext (char *arg) -{ - static int narg = 0; - - int rc = 0; - switch (narg) { - case 0: local_host= arg; break; - case 1: local_port = atoi (arg); if (local_port < 0) rc = 1; break; - case 2: remote_host = arg; break; - case 3: remote_port = atoi (arg); if (remote_port < 0) rc = 1; break; - case 4: mode = atoi (arg); break; - default: rc = 1; - } - narg++; - - return rc; -} -int (*parse_arg_ext) (char *) = _parse_arg_ext; - -#define MSGLEN 128 -#define MAXBUF 1024 - -int ping (int local_port, int remote_addr, int remote_port) -{ - - int sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); - if (sock == -1) { - fprintf (stderr, "ping error: socket\n"); - return 1; - } - - struct sockaddr_in local = { 0 }; - local.sin_family = AF_INET; - local.sin_port = htons (local_port); - local.sin_addr.s_addr = htonl (INADDR_ANY); - - if (bind (sock, (struct sockaddr *)&local, sizeof (local)) == -1) { - fprintf (stderr, "ping error: bind\n"); - return 1; - } - - struct sockaddr_in remote = { 0 }; - remote.sin_family = AF_INET; - remote.sin_port = htons (remote_port); - remote.sin_addr.s_addr = htonl (remote_addr); - - printf ("Sending ping...\n"); - for (int i = 0; i < nb_measurements; i++) { - - char *msg = get_msg (MSGLEN); - char buffer[MAXBUF] = { 0 }; - - ts_t ts1; - sys_timestamp (&ts1); - - if (sendto (sock, msg, MSGLEN, 0, (struct sockaddr *)&remote, sizeof (remote)) == -1) { - fprintf (stderr, "ping error: sendto (%d)\n", i); - return 1; - } - //printf ("sendto '%s'\n", buffer); - - int len = recv (sock, buffer, sizeof (buffer) - 1, 0); - if (len == -1) { - fprintf (stderr, "ping error: recv_from (%d)\n", i); - return 1; - } - //printf ("recv_from '%s'\n", buffer); - - ts_t ts2; - sys_timestamp (&ts2); - deltas[i] = diff_timestamp (&ts2, &ts1); - } - - close (sock); - - return 0; -} - -int pong (int local_port, int remote_addr, int remote_port) -{ - - int sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); - if (sock == -1) { - fprintf (stderr, "pong error: socket\n"); - return 1; - } - - struct sockaddr_in local = { 0 }; - local.sin_family = AF_INET; - local.sin_port = htons (local_port); - local.sin_addr.s_addr = htonl (INADDR_ANY); - - if (bind (sock, (struct sockaddr *)&local, sizeof (local)) == -1) { - fprintf (stderr, "pong error: bind\n"); - return 1; - } - - struct sockaddr_in remote = { 0 }; - remote.sin_family = AF_INET; - remote.sin_port = htons (remote_port); - remote.sin_addr.s_addr = htonl (remote_addr); - - printf ("Sending pong...\n"); - for (int i = 0; i < nb_measurements; i++) { - - char *msg = get_msg (MSGLEN); - char buffer[MAXBUF] = { 0 }; - - int len = recv (sock, buffer, sizeof (buffer) - 1, 0); - if (len == -1) { - fprintf (stderr, "pong error: recv_from (%d)\n", i); - return 1; - } - //printf ("recv_from '%s'\n", buffer); - - if (sendto (sock, msg, MSGLEN, 0, (struct sockaddr *)&remote, sizeof (remote)) == -1) { - fprintf (stderr, "pong error: sendto (%d)\n", i); - return 1; - } - //printf ("sendto '%s'\n", buffer); - } - - close (sock); - - return 0; -} - -int get_ip (char *hostname) { - struct hostent *he = gethostbyname (hostname); - if (he == NULL) { - fprintf (stderr, "error: gethostbyname (%s)\n", hostname); - return -1; - } - struct in_addr **addr_list = (struct in_addr **) he->h_addr_list; - return ntohl (addr_list[0]->s_addr); -} - -int test (dts_t *buffer, int nb) -{ - - /* set global variables */ - - deltas = buffer; - nb_measurements = nb; - - /* udp socket test */ - int local_ip = get_ip (local_host); - if (local_ip == -1) { - return 1; - } - int remote_ip = get_ip (remote_host); - if (remote_ip == -1) { - return 1; - } - - pid_t pid = (mode == 0 ) ? fork () : -2; - if (pid == -1) { - fprintf (stderr, "error: fork\n"); - return 1; - } else if ((pid == 0) || (mode == 2)) { - int rc = pong (remote_port, local_ip, local_port); - exit (rc); - } - - int rc = ping (local_port, remote_ip, remote_port); - - if ((pid > 0) && (kill (pid, SIGTERM) == 0)) { - int wstatus; - if (waitpid (pid, &wstatus, WUNTRACED | WCONTINUED) == -1) { - fprintf (stderr, "error: waitpid\n"); - } - } - - return rc; -}