From e79ba5f060c56732a8fed80f069ae5105cdda277 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Mon, 10 Jun 2013 10:56:57 -0700 Subject: [PATCH] cmatose: Support GID addresses Allow a user to specify a GID address as input into cmatose. This allows the use of native IB addresses via AF_IB support. Signed-off-by: Sean Hefty --- configure.ac | 2 +- examples/cmatose.c | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 35d79dd4..f3bccfe6 100644 --- a/configure.ac +++ b/configure.ac @@ -71,7 +71,7 @@ fi fi AC_CHECK_HEADER(infiniband/acm.h, - AC_DEFINE([USE_IB_ACM], 1, [setting IBACM support]), []) + AC_DEFINE([USE_IB_ACM], 1, [setting IBACM support]), []) AC_CHECK_HEADER(infiniband/acm.h, AC_CHECK_MEMBER(struct acm_msg.resolve_data, [], diff --git a/examples/cmatose.c b/examples/cmatose.c index 2b6b2b13..2971ed1a 100644 --- a/examples/cmatose.c +++ b/examples/cmatose.c @@ -44,6 +44,7 @@ #include #include +#include #include "common.h" struct cmatest_node { @@ -81,6 +82,7 @@ static uint8_t tos; static uint8_t migrate = 0; static char *dst_addr; static char *src_addr; +static char addr_type = 'u'; static int create_message(struct cmatest_node *node) { @@ -508,7 +510,11 @@ static int run_server(void) } memset(&hints, 0, sizeof hints); - hints.ai_flags = RAI_PASSIVE; + if (addr_type == 'g') { + hints.ai_flags = RAI_FAMILY | RAI_NUMERICHOST; + hints.ai_family = AF_IB; + } + 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) { @@ -585,6 +591,10 @@ static int run_client(void) printf("cmatose: starting client\n"); memset(&hints, 0, sizeof hints); + if (addr_type == 'g') { + hints.ai_flags = RAI_FAMILY | RAI_NUMERICHOST; + hints.ai_family = AF_IB; + } hints.ai_port_space = RDMA_PS_TCP; ret = get_rdma_addr(src_addr, dst_addr, port, &hints, &test.rai); if (ret) { @@ -642,7 +652,7 @@ int main(int argc, char **argv) { int op, ret; - while ((op = getopt(argc, argv, "s:b:c:C:S:t:p:m")) != -1) { + while ((op = getopt(argc, argv, "s:b:c:C:S:t:p:mf:")) != -1) { switch (op) { case 's': dst_addr = optarg; @@ -669,6 +679,9 @@ int main(int argc, char **argv) case 'm': migrate = 1; break; + case 'f': + addr_type = optarg[0]; + break; default: printf("usage: %s\n", argv[0]); printf("\t[-s server_address]\n"); @@ -679,6 +692,8 @@ int main(int argc, char **argv) printf("\t[-t type_of_service]\n"); printf("\t[-p port_number]\n"); printf("\t[-m(igrate)]\n"); + printf("\t[-f addr_format] - i(p), n(ame), l(id), g(gid), or u(nspecified)\n"); + printf("\t address format for -s and -b options, default: 'u'\n"); exit(1); } } -- 2.46.0