Addapt client and server to the 16bit port. Use htons before sending them to kernel.
[swifty.git] / test / server.c
index c25384a..7e00b8b 100644 (file)
@@ -1,4 +1,4 @@
-#include "../src/kernel/swift.h"
+#include "../src/kernel/mptp.h"
 
 #include <sys/socket.h>
 #include <sys/types.h>
@@ -7,30 +7,32 @@
 #include <netinet/in.h>
 #include <stdlib.h>
 
-#define ADDR 0x81BEA8C0
+#define ADDR 0x8182A8C0
+#define NUM_BUF 10
 
 int main(int argc, const char *argv[])
 {
     int sock;
+       int i;
 
     if (argc != 2) {
         fprintf(stderr, "USAGE: %s listening_port\n", argv[0]);
         return -1;
     }
 
-    sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_SWIFT);
+    sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_MPTP);
     if (sock < 0) {
         perror("Failed to create socket");
         return -1;
     }
 
-    int size = sizeof(struct sockaddr_swift) + sizeof(struct swift_dest);
-    struct sockaddr_swift *saddr = malloc(size);
+    int size = sizeof(struct sockaddr_mptp) + sizeof(struct mptp_dest);
+    struct sockaddr_mptp *saddr = malloc(size);
     memset(saddr, 0, size);
 
     saddr->count = 1;
     saddr->dests[0].addr = ADDR;
-    saddr->dests[0].port = atoi(argv[1]);
+    saddr->dests[0].port = htons(atoi(argv[1]));
 
     if (bind(sock, (struct sockaddr *) saddr, size) < 0) {
         perror("Failed to bind socket");
@@ -38,25 +40,30 @@ int main(int argc, const char *argv[])
         return -1;
     }
 
-    char buf[10240];
-    struct iovec iov[1];
+    char buf[NUM_BUF][10240];
+    struct iovec iov[NUM_BUF];
     struct msghdr msg;
-    struct sockaddr_swift *from = malloc(size);
+       size += (NUM_BUF - 1) * sizeof(struct mptp_dest);
+    struct sockaddr_mptp *from = malloc(size);
 
     memset(&msg, 0, sizeof(msg));
     memset(&iov, 0, sizeof(iov));
     memset(from, 0, size);
 
-    iov[0].iov_base = buf;
-    iov[0].iov_len = sizeof(buf);
+       for (i = 0; i < NUM_BUF; i++) {
+               iov[i].iov_base = buf[i];
+               iov[i].iov_len = sizeof(buf[i]);
+       }
 
     msg.msg_iov = iov;
-    msg.msg_iovlen = 1;
+    msg.msg_iovlen = 10;
     msg.msg_name = from;
     msg.msg_namelen = size;
 
     int ret, fromlen;
 
+       sleep(20);
+
     ret = recvmsg(sock, &msg, 0);
     if (ret < 0) {
         perror("Failed to recv on socket");
@@ -64,7 +71,9 @@ int main(int argc, const char *argv[])
     }
 
     printf("Received %d bytes on socket\n", ret);
-    printf("buf=%s\n", buf);
+       for (i = 0; i < from->count; i++) {
+               printf("buf=%s from %s:%d\n", buf[i], inet_ntoa(from->dests[i].addr), from->dests[i].port);
+       }
 
     if (close(sock) < 0) {
         perror("Failed to close socket");