Complete sw_sock_addr in swift_raw_simple_test
[swifty.git] / src / raw / swift_raw_simple_test.c
1 /*
2  * Simple test for raw socket based implementation of swift socket API.
3  *
4  * 2011, Razvan Deaconescu, razvan.deaconescu@cs.pub.ro
5  */
6
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include <sys/types.h>
11
12 #include "include/swift_types.h"
13 #include "include/swift_raw.h"
14 #include "include/util.h"
15
16 /*
17  * Create a socket, bind it and send data.
18  */
19 int main(int argc, char *argv[])
20 {
21         int sockfd;
22         struct sockaddr_sw local_addr;
23         struct sockaddr_sw remote_addr;
24         char buffer[BUFSIZ];
25         ssize_t bytes_sent;
26         int rc;
27
28         if (argc < 3)
29         {
30                 fprintf(stderr,"Usage \"./client ip_local hash ip_dest?\" .");
31         }
32
33         sockfd = sw_socket(PF_INET, SOCK_DGRAM, IPPROTO_SWIFT);
34         DIE(sockfd < 0, "sw_socket");
35
36         /* TODO: init_addr */
37         local_addr.sin_addr.s_addr = htonl(argv[1]);
38         memcpy(&local_addr.sw_hash, argv[2], sizeof(struct sw_hash));
39         rc = sw_bind(sockfd, (struct sockaddr *) &local_addr, sizeof(local_addr));
40         DIE(rc < 0, "sw_bind");
41
42         /* TODO: init remote_addr */
43         if (argv > 3)
44         {
45                 remote_addr.sin_addr.s_addr = htonl(argv[1]);
46                 memcpy(&remote_addr.sw_hash, argv[3], sizeof(struct sw_hash));
47                 bytes_sent = sw_sendto(sockfd, buffer, BUFSIZ, 0,
48                                         (struct sockaddr *) &remote_addr, sizeof(remote_addr));
49                 DIE(bytes_sent < 0, "sw_sendto");
50         }
51
52         return 0;
53 }