#include #include #include #include #include #include #include #include "header.h" void send_packet(int transmit, struct packet const * const foo); void read_packet(int recieve, struct packet* const foo); void box_RX(int transmit, int recieve); void box_TX(int transmit, int recieve); unsigned char buffer[128]; FILE* test; struct packet foo; int main() { pid_t child; int TX[2]; int RX[2]; ssize_t rw_return; int pipe_return; foo.md5sum[16] = '\0'; foo.payload = buffer; assert((pipe_return = pipe(TX)) == 0); assert((pipe_return = pipe(RX)) == 0); if((child = fork()) == -1) { return -1; } else if(child == 0) { /* child RX side*/ rw_return = read(RX[0], buffer, 128); if(rw_return == -1) { perror("CHILD READ:"); } printf("child read %d\n", rw_return); rw_return = write(TX[1], buffer, 128); if(rw_return == -1) { perror("CHILD WRITE:"); } printf("child wrote %d\n", rw_return); box_RX(TX[1], RX[0]); } else { fgets(buffer, 128, stdin); foo.pack_size = strlen(foo.payload)+20; MD5(foo.payload, foo.pack_size - 20, foo.md5sum); rw_return = write(RX[1], buffer, 128); if(rw_return == -1) { perror("PARENT WRITE"); } printf("parent wrote %d\n", rw_return); buffer[0] = '\0'; rw_return = read(TX[0], buffer, 128); if(rw_return == -1) { perror("PARENT READ:"); } printf("parent read %d\n", rw_return); printf("got %s\n", foo.payload); box_TX(RX[1], TX[0]); wait(NULL); /* parent TX side*/ } return 0; } void send_packet(int transmit, struct packet const * const foo) { int rw; rw = write(transmit, foo, 4); assert(rw == 4); rw = write(transmit, foo->payload, foo->pack_size- 20); assert(rw == foo->pack_size-20); rw = write(transmit, foo->md5sum, 16); assert(rw == 16); } void read_packet(int recieve, struct packet* const foo) { int rw; if(foo->payload) free(foo); rw = read(recieve, foo, 4); assert(rw == 4); foo->payload = malloc(foo->pack_size - 20); rw = read(recieve, foo->payload, foo->pack_size); assert(rw == foo->pack_size); rw = read(recieve, foo->md5sum, 16); assert(rw == 16); } void box_RX(int transmit, int recieve) { } void box_TX(int transmit, int recieve) { }