Adding a vsys script for large TCP receive buffers
authorSapan Bhatia <sapanb@cs.princeton.edu>
Tue, 24 Mar 2009 18:28:49 +0000 (18:28 +0000)
committerSapan Bhatia <sapanb@cs.princeton.edu>
Tue, 24 Mar 2009 18:28:49 +0000 (18:28 +0000)
Makefile
fd_bmsocket.c [new file with mode: 0644]
fdpass.h [new file with mode: 0644]

index 9bb4e8a..f4390a6 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -6,8 +6,11 @@ all: dcookie fd_bmsocket
 dcookie: dcookie.c
        gcc dcookie.c -o exec/dcookie
 
-fd_bmsocket: fd_bmsocket.c
-       gcc fd_bmsocket.c -o exec/fd_bmsocket
+fd_pass.o: fd_pass.c
+       gcc -c fd_pass.c -o fd_pass.o
+
+fd_bmsocket: fd_bmsocket.c fdpass.o
+       gcc fd_bmsocket.c fd_pass.o -o exec/fd_bmsocket
 
 clean: 
        rm -f exec/*
diff --git a/fd_bmsocket.c b/fd_bmsocket.c
new file mode 100644 (file)
index 0000000..c3fae75
--- /dev/null
@@ -0,0 +1,20 @@
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <stdio.h>
+#include "fdpass.h"
+
+#define RCVBUF 16*1024*1024
+
+int main(int argc, char *argv[]) {
+    int control_channel_fd, magic_socket;
+    if (argc < 3) {
+        printf("This script is called by vsys.\n");
+        exit(1);
+    }
+
+    sscanf(argv[2],"%d", &control_channel_fd);
+
+    magic_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+    setsockopt(magic_socket, SOL_SOCKET, SO_RCVBUF, RCVBUF, sizeof(unsigned int));
+    send_fd(control_channel, magic_socket);
+}
diff --git a/fdpass.h b/fdpass.h
new file mode 100644 (file)
index 0000000..f00a6fb
--- /dev/null
+++ b/fdpass.h
@@ -0,0 +1,5 @@
+// Modified version of library functions in FUSE
+//
+int send_fd(int sock_fd, int fd);
+int receive_fd(int fd);
+