1 #include "../src/kernel/swift.h"
3 #include <sys/socket.h>
7 #include <netinet/in.h>
11 #define ADDR 0x81BEA8C0
13 int main(int argc, const char *argv[])
18 fprintf(stderr, "USAGE: %s listening_port output_file_name\n", argv[0]);
22 sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_SWIFT);
24 perror("Failed to create socket");
28 int size = sizeof(struct sockaddr_swift) + sizeof(struct swift_dest);
29 struct sockaddr_swift *saddr = malloc(size);
30 memset(saddr, 0, size);
33 saddr->dests[0].addr = ADDR;
34 saddr->dests[0].port = atoi(argv[1]);
36 if (bind(sock, (struct sockaddr *) saddr, size) < 0) {
37 perror("Failed to bind socket");
42 int fd = open(argv[2], O_RDWR | O_CREAT | O_TRUNC);
44 perror("Failed to open file");
52 struct sockaddr_swift *from = malloc(size);
54 memset(&msg, 0, sizeof(msg));
55 memset(&iov, 0, sizeof(iov));
56 memset(from, 0, size);
58 iov[0].iov_base = buf;
59 iov[0].iov_len = sizeof(buf);
64 msg.msg_namelen = size;
69 ret = recvmsg(sock, &msg, 0);
71 perror("Failed to recv on socket");
76 ret = write(fd, buf, ret, 0);
78 perror("Failed to write in file");
83 printf("Received %d bytes on socket\n", ret);
84 printf("buf=%s\n", buf);
90 if (close(sock) < 0) {
91 perror("Failed to close socket");