X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Ftransport%2Ftest_plugin_transport_wlan_dummy.c;h=c8d9ea21b01817226e8f1e390e090568508ca355;hb=aa390e34b0b9e793e1c9f82a606ad0c10fcc84ca;hp=71fcd29cfd3e755aaa48d2476556f8e75cf997ab;hpb=adc9d89e46ab3f331fbba30298b2c569a5de14e4;p=oweals%2Fgnunet.git diff --git a/src/transport/test_plugin_transport_wlan_dummy.c b/src/transport/test_plugin_transport_wlan_dummy.c index 71fcd29cf..c8d9ea21b 100644 --- a/src/transport/test_plugin_transport_wlan_dummy.c +++ b/src/transport/test_plugin_transport_wlan_dummy.c @@ -47,89 +47,88 @@ #include "gnunet_util_lib.h" #include "plugin_transport_wlan.h" #include "gnunet_common.h" -#include "gnunet-transport-wlan-helper.h" +//#include "gnunet-transport-wlan-helper.h" #include "gnunet_crypto_lib.h" #include "wlan/loopback_helper.h" #include "wlan/helper_common.h" -int first; +static int first; static void -sigfunc(int sig) +sigfunc (int sig) { closeprog = 1; - unlink(FIFO_FILE1); - unlink(FIFO_FILE2); + unlink (FIFO_FILE1); + unlink (FIFO_FILE2); } static void -stdin_send(void *cls, void *client, const struct GNUNET_MessageHeader *hdr) +stdin_send (void *cls, void *client, const struct GNUNET_MessageHeader *hdr) { struct sendbuf *write_pout = cls; int sendsize; struct GNUNET_MessageHeader newheader; - unsigned char * from_data; - unsigned char * to_data; - //unsigned char * from_radiotap; - unsigned char * to_radiotap; - //unsigned char * from_start; - unsigned char * to_start; - - sendsize = ntohs(hdr->size) - sizeof(struct Radiotap_Send) - + sizeof(struct Radiotap_rx); - - if (GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA != ntohs(hdr->type)) - { - fprintf(stderr, "Function stdin_send: wrong packet type\n"); - exit(1); - } + char *to_data; + char *to_radiotap; + char *to_start; + + sendsize = + ntohs (hdr->size) - sizeof (struct Radiotap_Send) + + sizeof (struct Radiotap_rx); + + if (GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA != ntohs (hdr->type)) + { + fprintf (stderr, "Function stdin_send: wrong packet type\n"); + exit (1); + } if ((sendsize + write_pout->size) > MAXLINE * 2) - { - fprintf(stderr, "Function stdin_send: Packet too big for buffer\n"); - exit(1); - } + { + fprintf (stderr, "Function stdin_send: Packet too big for buffer\n"); + exit (1); + } - newheader.size = htons(sendsize); - newheader.type = htons(GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA); + newheader.size = htons (sendsize); + newheader.type = htons (GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA); to_start = write_pout->buf + write_pout->size; - to_radiotap = to_start + sizeof(struct GNUNET_MessageHeader); - to_data = to_radiotap + sizeof(struct Radiotap_rx); - - from_data = ((unsigned char *) hdr) + sizeof(struct Radiotap_Send) - + sizeof(struct GNUNET_MessageHeader); - - memcpy(to_start, &newheader, sizeof(struct GNUNET_MessageHeader)); - write_pout->size += sizeof(struct GNUNET_MessageHeader); - - write_pout->size += sizeof(struct Radiotap_rx); - - memcpy(to_data, from_data, ntohs(hdr->size) - sizeof(struct Radiotap_Send) - - sizeof(struct GNUNET_MessageHeader)); - write_pout->size += ntohs(hdr->size) - sizeof(struct Radiotap_Send) - - sizeof(struct GNUNET_MessageHeader); + memcpy (to_start, &newheader, sizeof (struct GNUNET_MessageHeader)); + write_pout->size += sizeof (struct GNUNET_MessageHeader); + + to_radiotap = to_start + sizeof (struct GNUNET_MessageHeader); + memset (to_radiotap, 0, sizeof (struct Radiotap_rx)); + write_pout->size += sizeof (struct Radiotap_rx); + + to_data = to_radiotap + sizeof (struct Radiotap_rx); + memcpy (to_data, + ((char *) hdr) + sizeof (struct Radiotap_Send) + + sizeof (struct GNUNET_MessageHeader), + ntohs (hdr->size) - sizeof (struct Radiotap_Send) - + sizeof (struct GNUNET_MessageHeader)); + write_pout->size += + ntohs (hdr->size) - sizeof (struct Radiotap_Send) - + sizeof (struct GNUNET_MessageHeader); } static void -file_in_send(void *cls, void *client, const struct GNUNET_MessageHeader *hdr) +file_in_send (void *cls, void *client, const struct GNUNET_MessageHeader *hdr) { - struct sendbuf * write_std = cls; + struct sendbuf *write_std = cls; uint16_t sendsize; - sendsize = ntohs(hdr->size); + sendsize = ntohs (hdr->size); - if (GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA != ntohs(hdr->type)) - { - fprintf(stderr, "Function file_in_send: wrong packet type\n"); - exit(1); - } + if (GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA != ntohs (hdr->type)) + { + fprintf (stderr, "Function file_in_send: wrong packet type\n"); + exit (1); + } if ((sendsize + write_std->size) > MAXLINE * 2) - { - fprintf(stderr, "Function file_in_send: Packet too big for buffer\n"); - exit(1); - } + { + fprintf (stderr, "Function file_in_send: Packet too big for buffer\n"); + exit (1); + } - memcpy(write_std->buf + write_std->size, hdr, sendsize); + memcpy (write_std->buf + write_std->size, hdr, sendsize); write_std->size += sendsize; } @@ -137,7 +136,7 @@ int closeprog; int -testmode(int argc, char *argv[]) +testmode (int argc, char *argv[]) { struct stat st; int erg; @@ -149,111 +148,113 @@ testmode(int argc, char *argv[]) int fdpout; //make the fifos if needed - if (0 != stat(FIFO_FILE1, &st)) + if (0 != stat (FIFO_FILE1, &st)) + { + if (0 == stat (FIFO_FILE2, &st)) { - if (0 == stat(FIFO_FILE2, &st)) - { - fprintf(stderr, "FIFO_FILE2 exists, but FIFO_FILE1 not\n"); - exit(1); - } - - umask(0); - //unlink(FIFO_FILE1); - //unlink(FIFO_FILE2); - // FIXME: use mkfifo! - erg = mknod(FIFO_FILE1, S_IFIFO | 0666, 0); - if (0 != erg) - { - fprintf(stderr, "Error at mknode1 \n"); - //exit(1); - } - erg = mknod(FIFO_FILE2, S_IFIFO | 0666, 0); - if (0 != erg) - { - fprintf(stderr, "Error at mknode2 \n"); - //exit(1); - } + fprintf (stderr, "FIFO_FILE2 exists, but FIFO_FILE1 not\n"); + exit (1); + } + umask (0); + //unlink(FIFO_FILE1); + //unlink(FIFO_FILE2); + // FIXME: use mkfifo! + erg = mkfifo (FIFO_FILE1, 0666); + if (0 != erg) + { + fprintf (stderr, "Error at mkfifo1: %s\n", strerror (errno)); + //exit(1); } - else + erg = mkfifo (FIFO_FILE2, 0666); + if (0 != erg) { + fprintf (stderr, "Error at mkfifo2: %s\n", strerror (errno)); + //exit(1); + } - if (0 != stat(FIFO_FILE2, &st)) - { - fprintf(stderr, "FIFO_FILE1 exists, but FIFO_FILE2 not\n"); - exit(1); - } + } + else + { + if (0 != stat (FIFO_FILE2, &st)) + { + fprintf (stderr, "FIFO_FILE1 exists, but FIFO_FILE2 not\n"); + exit (1); } - if (strstr(argv[1], "1")) - { - //fprintf(stderr, "First\n"); - first = 1; - fpin = fopen(FIFO_FILE1, "r"); - if (NULL == fpin) - { - fprintf(stderr, "fopen of read FIFO_FILE1\n"); - goto end; - } - fpout = fopen(FIFO_FILE2, "w"); - if (NULL == fpout) - { - fprintf(stderr, "fopen of write FIFO_FILE2\n"); - goto end; - } + } + if (strstr (argv[1], "1")) + { + //fprintf(stderr, "First\n"); + first = 1; + fpin = fopen (FIFO_FILE1, "r"); + if (NULL == fpin) + { + fprintf (stderr, "fopen of read FIFO_FILE1\n"); + goto end; } - else + fpout = fopen (FIFO_FILE2, "w"); + if (NULL == fpout) { - first = 0; - //fprintf(stderr, "Second\n"); - fpout = fopen(FIFO_FILE1, "w"); - if (NULL == fpout) - { - fprintf(stderr, "fopen of write FIFO_FILE1\n"); - goto end; - } - fpin = fopen(FIFO_FILE2, "r"); - if (NULL == fpin) - { - fprintf(stderr, "fopen of read FIFO_FILE2\n"); - goto end; - } - + fprintf (stderr, "fopen of write FIFO_FILE2\n"); + goto end; } - fdpin = fileno(fpin); - GNUNET_assert(fpin >= 0); - - if (fdpin >= FD_SETSIZE) + } + else + { + first = 0; + //fprintf(stderr, "Second\n"); + fpout = fopen (FIFO_FILE1, "w"); + if (NULL == fpout) + { + fprintf (stderr, "fopen of write FIFO_FILE1\n"); + goto end; + } + fpin = fopen (FIFO_FILE2, "r"); + if (NULL == fpin) { - fprintf(stderr, "File fdpin number too large (%d > %u)\n", fdpin, - (unsigned int) FD_SETSIZE); + fprintf (stderr, "fopen of read FIFO_FILE2\n"); goto end; } - fdpout = fileno(fpout); - GNUNET_assert(fdpout >= 0 ); + } + + fdpin = fileno (fpin); + GNUNET_assert (fpin >= 0); + + if (fdpin >= FD_SETSIZE) + { + fprintf (stderr, "File fdpin number too large (%d > %u)\n", fdpin, + (unsigned int) FD_SETSIZE); + goto end; + } + + fdpout = fileno (fpout); + GNUNET_assert (fdpout >= 0); if (fdpout >= FD_SETSIZE) - { - fprintf(stderr, "File fdpout number too large (%d > %u)\n", fdpout, - (unsigned int) FD_SETSIZE); - goto end; + { + fprintf (stderr, "File fdpout number too large (%d > %u)\n", fdpout, + (unsigned int) FD_SETSIZE); + goto end; - } + } - signal(SIGINT, &sigfunc); - signal(SIGTERM, &sigfunc); + signal (SIGINT, &sigfunc); + signal (SIGTERM, &sigfunc); char readbuf[MAXLINE]; int readsize = 0; struct sendbuf write_std; + write_std.size = 0; write_std.pos = 0; struct sendbuf write_pout; + write_pout.size = 0; write_pout.pos = 0; @@ -265,11 +266,11 @@ testmode(int argc, char *argv[]) struct timeval tv; int retval; - struct GNUNET_SERVER_MessageStreamTokenizer * stdin_mst; - struct GNUNET_SERVER_MessageStreamTokenizer * file_in_mst; + struct GNUNET_SERVER_MessageStreamTokenizer *stdin_mst; + struct GNUNET_SERVER_MessageStreamTokenizer *file_in_mst; - stdin_mst = GNUNET_SERVER_mst_create(&stdin_send, &write_pout); - file_in_mst = GNUNET_SERVER_mst_create(&file_in_send, &write_std); + stdin_mst = GNUNET_SERVER_mst_create (&stdin_send, &write_pout); + file_in_mst = GNUNET_SERVER_mst_create (&file_in_send, &write_std); //send mac first @@ -280,186 +281,184 @@ testmode(int argc, char *argv[]) macaddr.mac[1] = 0x22; macaddr.mac[2] = 0x33; macaddr.mac[3] = 0x44; - macaddr.mac[4] = GNUNET_CRYPTO_random_u32(GNUNET_CRYPTO_QUALITY_STRONG, 256); - macaddr.mac[5] = GNUNET_CRYPTO_random_u32(GNUNET_CRYPTO_QUALITY_NONCE, 256); + macaddr.mac[4] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_STRONG, 256); + macaddr.mac[5] = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_NONCE, 256); - write_std.size = send_mac_to_plugin((char *) write_std.buf, macaddr.mac); + write_std.size = send_mac_to_plugin (write_std.buf, macaddr.mac); while (0 == closeprog) - { - - maxfd = 0; + { - //set timeout - tv.tv_sec = 5; - tv.tv_usec = 0; + maxfd = 0; - FD_ZERO(&rfds); - // if output queue is empty - if (0 == write_pout.size) - { - FD_SET(STDIN_FILENO, &rfds); + //set timeout + tv.tv_sec = 5; + tv.tv_usec = 0; - } - if (0 == write_std.size) - { - FD_SET(fdpin, &rfds); - maxfd = fdpin; - } - FD_ZERO(&wfds); - // if there is something to write - if (0 < write_std.size) - { - FD_SET(STDOUT_FILENO, &wfds); - maxfd = MAX(maxfd, STDOUT_FILENO); - } + FD_ZERO (&rfds); + // if output queue is empty + if (0 == write_pout.size) + { + FD_SET (STDIN_FILENO, &rfds); - if (0 < write_pout.size) - { - FD_SET(fdpout, &wfds); - maxfd = MAX(maxfd, fdpout); - } + } + if (0 == write_std.size) + { + FD_SET (fdpin, &rfds); + maxfd = fdpin; + } + FD_ZERO (&wfds); + // if there is something to write + if (0 < write_std.size) + { + FD_SET (STDOUT_FILENO, &wfds); + maxfd = MAX (maxfd, STDOUT_FILENO); + } - retval = select(maxfd + 1, &rfds, &wfds, NULL, &tv); + if (0 < write_pout.size) + { + FD_SET (fdpout, &wfds); + maxfd = MAX (maxfd, fdpout); + } - if (-1 == retval && EINTR == errno) - { - continue; - } - if (0 > retval) - { - fprintf(stderr, "select failed: %s\n", strerror(errno)); - closeprog = 1; - break; - } + retval = select (maxfd + 1, &rfds, &wfds, NULL, &tv); - if (FD_ISSET(STDOUT_FILENO, &wfds)) - { - ret = write(STDOUT_FILENO, write_std.buf + write_std.pos, - write_std.size - write_std.pos); - - if (0 > ret) - { - closeprog = 1; - fprintf(stderr, "Write ERROR to STDOUT\n"); - break; - } - else - { - write_std.pos += ret; - // check if finished - if (write_std.pos == write_std.size) - { - write_std.pos = 0; - write_std.size = 0; - } - } - } + if (-1 == retval && EINTR == errno) + { + continue; + } + if (0 > retval) + { + fprintf (stderr, "select failed: %s\n", strerror (errno)); + closeprog = 1; + break; + } - if (FD_ISSET(fdpout, &wfds)) + if (FD_ISSET (STDOUT_FILENO, &wfds)) + { + ret = + write (STDOUT_FILENO, write_std.buf + write_std.pos, + write_std.size - write_std.pos); + if (0 > ret) + { + closeprog = 1; + fprintf (stderr, "Write ERROR to STDOUT\n"); + break; + } + else + { + write_std.pos += ret; + // check if finished + if (write_std.pos == write_std.size) { - ret = write(fdpout, write_pout.buf + write_pout.pos, write_pout.size - - write_pout.pos); - - if (0 > ret) - { - closeprog = 1; - fprintf(stderr, "Write ERROR to fdpout\n"); - } - else - { - write_pout.pos += ret; - // check if finished - if (write_pout.pos == write_pout.size) - { - write_pout.pos = 0; - write_pout.size = 0; - } - } + write_std.pos = 0; + write_std.size = 0; } + } + } - if (FD_ISSET(STDIN_FILENO, &rfds)) + if (FD_ISSET (fdpout, &wfds)) + { + ret = + write (fdpout, write_pout.buf + write_pout.pos, + write_pout.size - write_pout.pos); + + if (0 > ret) + { + closeprog = 1; + fprintf (stderr, "Write ERROR to fdpout\n"); + } + else + { + write_pout.pos += ret; + // check if finished + if (write_pout.pos == write_pout.size) { - readsize = read(STDIN_FILENO, readbuf, sizeof(readbuf)); - - if (0 > readsize) - { - closeprog = 1; - fprintf(stderr, "Read ERROR to STDIN_FILENO\n"); - } - else if (0 < readsize) - { - GNUNET_SERVER_mst_receive(stdin_mst, NULL, readbuf, readsize, - GNUNET_NO, GNUNET_NO); - - } - else - { - //eof - closeprog = 1; - } + write_pout.pos = 0; + write_pout.size = 0; } + } + } - if (FD_ISSET(fdpin, &rfds)) - { - readsize = read(fdpin, readbuf, sizeof(readbuf)); - - if (0 > readsize) - { - closeprog = 1; - fprintf(stderr, "Read ERROR to fdpin: %s\n", strerror(errno)); - break; - } - else if (0 < readsize) - { - GNUNET_SERVER_mst_receive(file_in_mst, NULL, readbuf, readsize, - GNUNET_NO, GNUNET_NO); - - } - else - { - //eof - closeprog = 1; - } - } + if (FD_ISSET (STDIN_FILENO, &rfds)) + { + readsize = read (STDIN_FILENO, readbuf, sizeof (readbuf)); + + if (0 > readsize) + { + closeprog = 1; + fprintf (stderr, "Read ERROR to STDIN_FILENO\n"); + } + else if (0 < readsize) + { + GNUNET_SERVER_mst_receive (stdin_mst, NULL, readbuf, readsize, + GNUNET_NO, GNUNET_NO); + + } + else + { + //eof + closeprog = 1; + } + } + if (FD_ISSET (fdpin, &rfds)) + { + readsize = read (fdpin, readbuf, sizeof (readbuf)); + + if (0 > readsize) + { + closeprog = 1; + fprintf (stderr, "Read ERROR to fdpin: %s\n", strerror (errno)); + break; + } + else if (0 < readsize) + { + GNUNET_SERVER_mst_receive (file_in_mst, NULL, readbuf, readsize, + GNUNET_NO, GNUNET_NO); + + } + else + { + //eof + closeprog = 1; + } } + } + //clean up - GNUNET_SERVER_mst_destroy(stdin_mst); - GNUNET_SERVER_mst_destroy(file_in_mst); + GNUNET_SERVER_mst_destroy (stdin_mst); + GNUNET_SERVER_mst_destroy (file_in_mst); - end: if (fpout != NULL) - fclose(fpout); +end:if (fpout != NULL) + fclose (fpout); if (fpin != NULL) - fclose(fpin); + fclose (fpin); if (1 == first) - { - unlink(FIFO_FILE1); - unlink(FIFO_FILE2); - } + { + unlink (FIFO_FILE1); + unlink (FIFO_FILE2); + } return (0); } int -main(int argc, char *argv[]) +main (int argc, char *argv[]) { if (2 != argc) - { - fprintf (stderr, - "This program must be started with the operating mode as argument.\n"); - fprintf (stderr, - "Usage: options\n" - "options:\n" - "1 = first loopback file\n" - "2 = second loopback file\n" - "\n"); - return 1; - } - if (strstr(argv[1], "1") || strstr(argv[1], "2")) - return testmode(argc, argv); + { + fprintf (stderr, + "This program must be started with the operating mode as argument.\n"); + fprintf (stderr, + "Usage: options\n" "options:\n" "1 = first loopback file\n" + "2 = second loopback file\n" "\n"); + return 1; + } + if (strstr (argv[1], "1") || strstr (argv[1], "2")) + return testmode (argc, argv); return 1; }