--- /dev/null
+Bottom: 3550bace98f1e4ab54dfcdc255f2dd8774f3f09b
+Top: 53f19f53102c76709faccdc0cba71ef7b3a96c5e
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2011-06-28 17:32:09 -0700
+
+Refresh of counters
+
+---
+
+diff --git a/src/acm.c b/src/acm.c
+index d1cdb8b..1f9d2e8 100644
+--- a/src/acm.c
++++ b/src/acm.c
+@@ -1010,9 +1010,9 @@ acm_client_resolve_resp(struct acm_client *client, struct acm_resolve_msg *req_m
+ memset(&msg, 0, sizeof msg);
+
+ if (status == ACM_STATUS_ENODATA)
+- atomic_inc(counters[ACM_CNTR_NODATA]);
++ atomic_inc(&counter[ACM_CNTR_NODATA]);
+ else if (status)
+- atomic_inc(counters[ACM_CNTR_ERROR]);
++ atomic_inc(&counter[ACM_CNTR_ERROR]);
+
+ lock_acquire(&client->lock);
+ if (client->sock == INVALID_SOCKET) {
+@@ -2239,7 +2239,7 @@ static int acm_svr_resolve(struct acm_client *client, struct acm_resolve_msg *ms
+
+ static int acm_svr_perf_query(struct acm_client *client, struct acm_perf_msg *msg)
+ {
+- int i;
++ int ret, i;
+
+ acm_log(2, "client %d\n", client->index);
+ msg->hdr.opcode |= ACM_OP_ACK;
+@@ -2256,14 +2256,14 @@ static int acm_svr_perf_query(struct acm_client *client, struct acm_perf_msg *ms
+ if (ret != msg->hdr.length)
+ acm_log(0, "ERROR - failed to send response\n");
+ else
+- ret = 0
++ ret = 0;
++
+ return ret;
+ }
+
+ static void acm_svr_receive(struct acm_client *client)
+ {
+ struct acm_msg msg;
+- struct acm_resolve_msg *resolve_msg = (struct acm_resolve_msg *) &msg;
+ int ret;
+
+ acm_log(2, "client %d\n", client->index);
+@@ -2606,7 +2606,6 @@ static struct acm_ep *
+ acm_alloc_ep(struct acm_port *port, uint16_t pkey, uint16_t pkey_index)
+ {
+ struct acm_ep *ep;
+- int i;
+
+ acm_log(1, "\n");
+ ep = calloc(1, sizeof *ep);
+diff --git a/src/acme.c b/src/acme.c
+index 3be1f86..39ce2dd 100644
+--- a/src/acme.c
++++ b/src/acme.c
+@@ -583,7 +583,9 @@ static char *get_dest(char *arg, char *format)
+ static int resolve(char *program, char *dest_arg)
+ {
+ char **dest_list;
++ struct ibv_path_record path;
+ int ret, i = 0;
++ char dest_type;
+
+ ret = ib_acm_connect("127.0.0.1");
+ if (ret) {
+@@ -633,10 +635,10 @@ static int resolve(char *program, char *dest_arg)
+ return ret;
+ }
+
+-static int perf_query(char *program, char *dest_arg)
++static int query_perf(char *program, char *dest_arg)
+ {
+ char **dest_list;
+- int ret, cnt, i, d = 0;
++ int ret, cnt, i, d;
+ uint64_t *counters;
+
+ dest_list = parse(dest_arg, NULL);
+@@ -646,14 +648,13 @@ static int perf_query(char *program, char *dest_arg)
+ }
+
+ printf("Destination,Error Count,Resolve Count,No Data,Addr Cache Count,"
+- "Addr Query Count,Route Cache Count,Route Query Count\n")
+- for (dest_addr = get_dest(dest_list[d], &dest_type); dest_addr;
+- dest_addr = get_dest(dest_list[++d], &dest_type)) {
++ "Addr Query Count,Route Cache Count,Route Query Count\n");
++ for (d = 0; dest_list[d]; d++) {
+
+- printf("%s,", dest_addr);
+- ret = ib_acm_connect(dest_addr);
++ printf("%s,", dest_list[d]);
++ ret = ib_acm_connect(dest_list[d]);
+ if (ret) {
+- printf("Unable to contact ib_acm service\n);
++ printf("Unable to contact ib_acm service\n");
+ continue;
+ }
+
+@@ -662,7 +663,7 @@ static int perf_query(char *program, char *dest_arg)
+ printf("Failed to query perf data %s\n", strerror(errno));
+ } else {
+ for (i = 0; i < cnt; i++)
+- printf("%ull,", counters[i]);
++ printf("%llu,", counters[i]);
+ printf("\n");
+ }
+
+@@ -746,7 +747,7 @@ int CDECL_FUNC main(int argc, char **argv)
+
+ if (dest_arg) {
+ if (perf_query)
+- ret = perf_query(argv[0], dest_arg);
++ ret = query_perf(argv[0], dest_arg);
+ else
+ ret = resolve(argv[0], dest_arg);
+ }
+diff --git a/src/libacm.c b/src/libacm.c
+index 4491506..eb52a3c 100644
+--- a/src/libacm.c
++++ b/src/libacm.c
+@@ -36,6 +36,8 @@
+ #include <infiniband/acm.h>
+ #include <stdio.h>
+ #include <errno.h>
++#include <netdb.h>
++#include <arpa/inet.h>
+
+ struct acm_port {
+ uint8_t port_num;
+@@ -66,31 +68,6 @@ static void acm_set_server_port(void)
+ }
+ }
+
+-static char *get_dest(char *arg)
+-{
+- static char addr[64];
+- struct addrinfo hint, *res;
+- const char *ai;
+- int ret;
+-
+- memset(&hint, 0, sizeof hint);
+- hint.ai_protocol = IPPROTO_TCP;
+- ret = getaddrinfo(arg, NULL, &hint, &res);
+- if (ret) {
+- *format = 'l';
+- return arg;
+- }
+-
+- if (res->ai_family == AF_INET) {
+- ai = inet_ntop(AF_INET, &((struct sockaddr_in *) res->ai_addr)->sin_addr,
+- addr, sizeof addr);
+- } else {
+- ai = inet_ntop(AF_INET6, &((struct sockaddr_in6 *) res->ai_addr)->sin6_addr,
+- addr, sizeof addr);
+- }
+- freeaddrinfo(res);
+-}
+-
+ int ib_acm_connect(char *dest)
+ {
+ struct addrinfo hint, *res;
+@@ -337,11 +314,11 @@ out:
+ return ret;
+ }
+
+-static int ib_acm_query_perf(uint64_t **counters, int *count)
++int ib_acm_query_perf(uint64_t **counters, int *count)
+ {
+ struct acm_msg msg;
+ struct acm_perf_msg *perf_msg = (struct acm_perf_msg *) &msg;
+- int ret, cnt = 0;
++ int ret;
+
+ lock_acquire(&lock);
+ memset(&msg, 0, sizeof msg);
+@@ -369,6 +346,7 @@ static int ib_acm_query_perf(uint64_t **counters, int *count)
+ }
+
+ memcpy(*counters, perf_msg->data, msg.hdr.data[0]);
++ *count = msg.hdr.data[0];
+ ret = 0;
+ out:
+ lock_release(&lock);