]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
cmatose: Allow user to specify address format
authorSean Hefty <sean.hefty@intel.com>
Wed, 29 Aug 2012 22:02:54 +0000 (15:02 -0700)
committerSean Hefty <sean.hefty@intel.com>
Wed, 29 Aug 2012 22:42:04 +0000 (15:42 -0700)
Provide an option for the user to indicate the type of
addresses used as input.  Support hostname, IPv4, IPv6,
and GIDs.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
examples/cmatose.c
examples/common.c

index 94fc4cd00d7900454ca1d9b9731260f6a72f46bf..1ff87d69955188f1f7d954d85018f0df3d579569 100644 (file)
@@ -81,6 +81,7 @@ static uint8_t tos;
 static uint8_t migrate = 0;
 static char *dst_addr;
 static char *src_addr;
+static struct rdma_addrinfo hints;
 
 static int create_message(struct cmatest_node *node)
 {
@@ -501,7 +502,6 @@ static int migrate_channel(struct rdma_cm_id *listen_id)
 static int run_server(void)
 {
        struct rdma_cm_id *listen_id;
-       struct rdma_addrinfo hints;
        int i, ret;
 
        printf("cmatose: starting server\n");
@@ -511,9 +511,6 @@ static int run_server(void)
                return ret;
        }
 
-       memset(&hints, 0, sizeof hints);
-       hints.ai_flags = RAI_PASSIVE;
-       hints.ai_port_space = RDMA_PS_TCP;
        ret = get_rdma_addr(src_addr, dst_addr, port, &hints, &test.rai);
        if (ret) {
                perror("cmatose: getrdmaaddr error");
@@ -583,13 +580,10 @@ out:
 
 static int run_client(void)
 {
-       struct rdma_addrinfo hints;
        int i, ret, ret2;
 
        printf("cmatose: starting client\n");
 
-       memset(&hints, 0, sizeof hints);
-       hints.ai_port_space = RDMA_PS_TCP;
        ret = get_rdma_addr(src_addr, dst_addr, port, &hints, &test.rai);
        if (ret) {
                perror("cmatose: getaddrinfo error");
@@ -654,6 +648,16 @@ int main(int argc, char **argv)
                case 'b':
                        src_addr = optarg;
                        break;
+               case 'f':
+                       if (!strncasecmp("ip", optarg, 2)) {
+                               hints.ai_flags = RAI_NUMERICHOST;
+                       } else if (!strncasecmp("gid", optarg, 3)) {
+                               hints.ai_flags = RAI_NUMERICHOST | RAI_FAMILY;
+                               hints.ai_family = AF_IB;
+                       } else if (strncasecmp("name", optarg, 4)) {
+                               fprintf(stderr, "Warning: unknown address format\n");
+                       }
+                       break;
                case 'c':
                        connections = atoi(optarg);
                        break;
@@ -677,6 +681,8 @@ int main(int argc, char **argv)
                        printf("usage: %s\n", argv[0]);
                        printf("\t[-s server_address]\n");
                        printf("\t[-b bind_address]\n");
+                       printf("\t[-f address_format]\n")
+                       printf("\t    name, ip, ipv6, or gid\n")
                        printf("\t[-c connections]\n");
                        printf("\t[-C message_count]\n");
                        printf("\t[-S message_size]\n");
@@ -699,10 +705,13 @@ int main(int argc, char **argv)
        if (alloc_nodes())
                exit(1);
 
-       if (dst_addr)
+       hints.ai_port_space = RDMA_PS_TCP;
+       if (dst_addr) {
                ret = run_client();
-       else
+       } else {
+               hints.ai_flags |= RAI_PASSIVE;
                ret = run_server();
+       }
 
        printf("test complete\n");
        destroy_nodes();
index 3eeb1e9b647d3ba4a3a454163e8fd2fff84ef140..eeee046dcc6225388cabb3d07d52fe9bccb8737b 100644 (file)
@@ -56,7 +56,7 @@ int get_rdma_addr(char *src, char *dst, char *port,
 
        rai_hints = *hints;
        if (src) {
-               rai_hints.ai_flags = RAI_PASSIVE;
+               rai_hints.ai_flags |= RAI_PASSIVE;
                ret = rdma_getaddrinfo(src, NULL, &rai_hints, &res);
                if (ret)
                        return ret;