]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
add cli/svr test apps from Susan
authorSean Hefty <sean.hefty@intel.com>
Wed, 10 Apr 2013 23:33:39 +0000 (16:33 -0700)
committerSean Hefty <sean.hefty@intel.com>
Wed, 10 Apr 2013 23:33:39 +0000 (16:33 -0700)
Makefile.am
examples/rcli.c [new file with mode: 0755]
examples/rsvr.c [new file with mode: 0755]

index 31981651a33f535a9be47f71e8a91fc0def5d9a2..a908008d2acc2087aab4cc3d07972b61312583c6 100644 (file)
@@ -29,7 +29,7 @@ src_librspreload_la_LIBADD = $(top_builddir)/src/librdmacm.la
 bin_PROGRAMS = examples/ucmatose examples/rping examples/udaddy examples/mckey \
               examples/rdma_client examples/rdma_server examples/rdma_xclient \
               examples/rdma_xserver examples/rstream examples/rcopy \
-              examples/riostream examples/udpong
+              examples/riostream examples/udpong examples/rcli examples/rsvr
 examples_ucmatose_SOURCES = examples/cmatose.c examples/common.c
 examples_ucmatose_LDADD = $(top_builddir)/src/librdmacm.la
 examples_rping_SOURCES = examples/rping.c
@@ -54,6 +54,10 @@ examples_rcopy_SOURCES = examples/rcopy.c
 examples_rcopy_LDADD = $(top_builddir)/src/librdmacm.la
 examples_udpong_SOURCES = examples/udpong.c examples/common.c
 examples_udpong_LDADD = $(top_builddir)/src/librdmacm.la
+examples_rcli_SOURCES = examples/rcli.c
+examples_rcli_LDADD = $(top_builddir)/src/librdmacm.la
+examples_rsvr_SOURCES = examples/rsvr.c
+examples_rsvr_LDADD = $(top_builddir)/src/librdmacm.la
 
 librdmacmincludedir = $(includedir)/rdma
 infinibandincludedir = $(includedir)/infiniband
diff --git a/examples/rcli.c b/examples/rcli.c
new file mode 100755 (executable)
index 0000000..ed3c474
--- /dev/null
@@ -0,0 +1,88 @@
+#include <rdma/rsocket.h>\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <string.h>\r
+#include <unistd.h>\r
+#include <sys/types.h>\r
+#include <netinet/in.h>\r
+#include <arpa/inet.h>\r
+\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+   char rbuf[80];\r
+   int n, s;\r
+   int optval;\r
+   socklen_t optlen = sizeof(optval);\r
+   struct sockaddr_in srvaddr;\r
+  \r
+   if (argc != 2) {\r
+      printf("Usage: %s ipaddr\n", argv[0]);\r
+      exit(EXIT_FAILURE);\r
+   }\r
+\r
+   /* Create the socket */\r
+   if ((s = rsocket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {\r
+      perror("rsocket()");\r
+      exit(EXIT_FAILURE);\r
+   }\r
\r
+   /* Check the status for the keepalive option */\r
+   if (rgetsockopt(s, SOL_SOCKET, SO_KEEPALIVE, &optval, &optlen) < 0) {\r
+      perror("rgetsockopt()");\r
+      close(s);\r
+      exit(EXIT_FAILURE);\r
+   }\r
+   printf("SO_KEEPALIVE is %s\n", (optval ? "ON" : "OFF"));\r
+\r
+   memset(&srvaddr, '0', sizeof(srvaddr));\r
+\r
+   if (inet_pton(AF_INET, argv[1], &srvaddr.sin_addr) < 0) {\r
+      printf("IP Conversion failed\n");\r
+      exit(EXIT_FAILURE);\r
+   }\r
+\r
+   srvaddr.sin_family = AF_INET;\r
+   srvaddr.sin_port = htons(7777);\r
+\r
+   /* Connect */\r
+   if (rconnect(s,(struct sockaddr*)&srvaddr,sizeof(srvaddr)) < 0) {\r
+      perror("rconnect()");\r
+      close(s);\r
+      exit(EXIT_FAILURE);\r
+\r
+   }\r
+\r
+   /* Set the option active */\r
+   optval = 1;\r
+   optlen = sizeof(optval);\r
+   if (rsetsockopt(s, SOL_SOCKET, SO_KEEPALIVE, &optval, optlen) < 0) {\r
+      perror("rsetsockopt()");\r
+      close(s);\r
+      exit(EXIT_FAILURE);\r
+   }\r
+   printf("SO_KEEPALIVE set on socket\n");\r
+\r
+   /* Check the status again */\r
+   if (rgetsockopt(s, SOL_SOCKET, SO_KEEPALIVE, &optval, &optlen) < 0) {\r
+      perror("rgetsockopt()");\r
+      close(s);\r
+      exit(EXIT_FAILURE);\r
+   }\r
+   printf("SO_KEEPALIVE is %s\n", (optval ? "ON" : "OFF"));\r
+\r
+   memset(rbuf, '0', sizeof(rbuf));\r
+\r
+   while ((n=rread(s,rbuf,sizeof(rbuf)-1)) > 0) {\r
+      rbuf[n] = 0;\r
+      if (fputs(rbuf, stdout) == EOF)\r
+         printf("Error writing receive buffer stdout\n");\r
+   }\r
+\r
+   if (n<0) printf("No data\n");         \r
+\r
+   return 0;\r
+\r
+   exit(EXIT_SUCCESS);\r
+}\r
+\r
diff --git a/examples/rsvr.c b/examples/rsvr.c
new file mode 100755 (executable)
index 0000000..a630048
--- /dev/null
@@ -0,0 +1,70 @@
+#include <rdma/rsocket.h>\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <string.h>\r
+#include <time.h>\r
+#include <unistd.h>\r
+#include <sys/types.h>\r
+#include <netinet/in.h>\r
+\r
+#define MAX_CLIENTS 2\r
+\r
+int main()\r
+{\r
+   char sbuf[80];\r
+   int limit, num_clients, s, sc;\r
+   int clients[MAX_CLIENTS];\r
+   struct sockaddr_in srvaddr;\r
+   time_t t;\r
+  \r
+   /* Create the socket */\r
+   if ((s = rsocket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {\r
+      perror("rsocket()");\r
+      exit(EXIT_FAILURE);\r
+   }\r
+\r
+   /* Bind */\r
+   memset(&srvaddr, '0', sizeof(srvaddr));\r
+   srvaddr.sin_family = AF_INET;\r
+   srvaddr.sin_addr.s_addr = htonl(INADDR_ANY);\r
+   srvaddr.sin_port = htons(7777);\r
+\r
+   if (rbind(s,(struct sockaddr*)&srvaddr,sizeof(srvaddr)) < 0) {\r
+      perror("rbind()");\r
+      close(s);\r
+      exit(EXIT_FAILURE);\r
+   }\r
+\r
+   if (rlisten(s,MAX_CLIENTS) < 0) {\r
+     perror("listen()");\r
+     exit(EXIT_FAILURE);\r
+   }\r
+\r
+   num_clients=0;\r
+   while(1) {\r
+\r
+      limit=1;\r
+      while(limit) {\r
+         if (num_clients < MAX_CLIENTS) {\r
+            sc = raccept(s, (struct sockaddr*)NULL, NULL); \r
+            clients[num_clients] = sc;\r
+            num_clients++;\r
+            t = time(NULL);\r
+            snprintf(sbuf, sizeof(sbuf), "%.24s\r\n", ctime(&t));\r
+            rwrite(sc, sbuf, strlen(sbuf)); \r
+         } else {\r
+            limit=0;\r
+         }\r
+\r
+         sleep(1);\r
+      }\r
+      \r
+      if (limit == 0 && num_clients == MAX_CLIENTS) {\r
+         printf("Max number of clients, %i, has been reached\n", MAX_CLIENTS);\r
+         num_clients = 9999;\r
+      }\r
+      sleep(1);\r
+   }\r
+\r
+}\r
+\r