1 #include "../src/kernel/swift.h"
3 #include <sys/socket.h>
7 #include <netinet/in.h>
11 #define ADDR 0x8082A8C0
12 #define DADDR 0x8182A8C0
18 ret = (rand() % 255) + 1;
19 if (ret == 100 || ret == 101)
21 printf("Generated source port %d\n", ret);
25 int main(int argc, const char *argv[])
29 sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_SWIFT);
31 perror("Failed to create socket");
35 int size = sizeof(struct sockaddr_swift) + sizeof(struct swift_dest);
36 struct sockaddr_swift *saddr = malloc(size);
37 memset(saddr, 0, size);
40 saddr->dests[0].addr = ADDR;
41 saddr->dests[0].port = gen_port();
43 if (bind(sock, (struct sockaddr *) saddr, size) < 0) {
44 perror("Failed to bind socket");
50 sprintf(buf, "Buffer");
55 int size2 = sizeof(struct sockaddr_swift) + N * sizeof(struct swift_dest);
56 struct sockaddr_swift *to = malloc(size2);
58 memset(&msg, 0, sizeof(msg));
59 memset(&iov, 0, sizeof(iov));
63 for (i = 0; i < N; i++) {
64 iov[i].iov_base = buf;
65 iov[i].iov_len = sizeof(buf);
69 for (i = 0; i < N; i++) {
70 to->dests[i].addr = DADDR;
71 to->dests[i].port = 100;
77 msg.msg_namelen = size2;
81 struct timeval tv1, tv2;
82 gettimeofday(&tv1, NULL);
83 for (i = 0; i < 10000 / N; i++) {
84 ret = sendmsg(sock, &msg, sizeof(msg));
86 perror("Failed to send on socket");
90 gettimeofday(&tv2, NULL);
92 printf("diff=%ld\n", (tv2.tv_sec - tv1.tv_sec) * 1000 + (tv2.tv_usec - tv1.tv_usec) / 1000);
94 if (close(sock) < 0) {
95 perror("Failed to close socket");