Version: 1
-Previous: 2aea356d92dc415819f3dc1ee5288da7d76e3d1e
-Head: fc86a72e41f810badcff25a5dc1f418193021e69
+Previous: 956016634d5c8432c9bd6a02f551abbdac7e6fc8
+Head: 833a9b2ec1eff481ec64332b58f20ddaa7c25830
Applied:
logging: 549692c49922dce3911d97dcc6d0a2fc583ab5f7
acm_snoop: dd5542fbaa1c5a92367d0552ef3525d5ea0a4638
no_addr: 775cf275e0feddd7b884ded8cdc341a919e4f9a6
log_port: 92f81cd1f299db9d83aa21d794cfdfc4c4b5794f
nodelay: 3dc208def66463660ee185a0346722561e7c2448
- acme_dest: 5abf3d39146129086c274db504862505766af9b1
- refresh-temp: fc86a72e41f810badcff25a5dc1f418193021e69
+ acme_dest: 833a9b2ec1eff481ec64332b58f20ddaa7c25830
Unapplied:
acme_verbose: 45cba0846874c93ef7af156bf0afe59f43d82ea6
1.0.4: 9f452b8e59adb21b90fbdda980d25a54d4360d37
Bottom: 6b1a8889e0c9bde043dfd2126fed3c613bff07a0
-Top: 6b1a8889e0c9bde043dfd2126fed3c613bff07a0
+Top: f60ed9288e7252a96dc54138944bb578264abc39
Author: Sean Hefty <sean.hefty@intel.com>
Date: 2010-12-06 16:13:22 -0800
---
-
+diff --git a/man/ib_acme.1 b/man/ib_acme.1
+index 52000a3..56c49f0 100644
+--- a/man/ib_acme.1
++++ b/man/ib_acme.1
+@@ -4,7 +4,7 @@ ib_acme \- test and configuration utility for the IB ACM
+ .SH SYNOPSIS\r
+ .sp\r
+ .nf\r
+-\fIib_acme\fR [-f addr_format] -s src_addr -d dest_addr [-v]\r
++\fIib_acme\fR [-f addr_format] [-s src_addr] -d dest_addr [-v]\r
+ .fi\r
+ .nf\r
+ \fIib_acme\fR [-G] [-O]\r
+diff --git a/src/acme.c b/src/acme.c
+index 3ee2073..07294bf 100644
+--- a/src/acme.c
++++ b/src/acme.c
+@@ -68,7 +68,7 @@ static void show_usage(char *program)
+ printf("usage 1: %s\n", program);
+ printf(" [-f addr_format] - i(p), n(ame), or l(id)\n");
+ printf(" default: 'i'\n");
+- printf(" -s src_addr - format defined by -f option\n");
++ printf(" [-s src_addr] - format defined by -f option\n");
+ printf(" -d dest_addr - format defined by -f option\n");
+ printf(" [-v] - verify ACM response against SA query response\n");
+ printf(" [-c] - read ACM cached data only\n")
+@@ -434,13 +434,19 @@ static int resolve_ip(struct ibv_path_record *path)
+ {
+ struct ibv_path_data *paths;
+ struct sockaddr_in src, dest;
++ struct sockaddr *saddr;
+ int ret, count;
+
+- src.sin_family = AF_INET;
+- ret = inet_pton(AF_INET, src_addr, &src.sin_addr);
+- if (ret <= 0) {
+- printf("inet_pton error on source address (%s): 0x%x\n", src_addr, ret);
+- return ret;
++ if (src_addr) {
++ src.sin_family = AF_INET;
++ ret = inet_pton(AF_INET, src_addr, &src.sin_addr);
++ if (ret <= 0) {
++ printf("inet_pton error on source address (%s): 0x%x\n", src_addr, ret);
++ return ret;
++ }
++ saddr = (struct sockaddr *) &src;
++ } else {
++ saddr = NULL;
+ }
+
+ dest.sin_family = AF_INET;
+@@ -450,7 +456,7 @@ static int resolve_ip(struct ibv_path_record *path)
+ return ret;
+ }
+
+- ret = ib_acm_resolve_ip((struct sockaddr *) &src, (struct sockaddr *) &dest,
++ ret = ib_acm_resolve_ip(saddr, (struct sockaddr *) &dest,
+ &paths, &count, get_resolve_flags());
+ if (ret) {
+ printf("ib_acm_resolve_ip failed: 0x%x\n", ret);
+@@ -601,13 +607,13 @@ int CDECL_FUNC main(int argc, char **argv)
+ }
+ }
+
+- if ((src_addr && !dest_addr) || (dest_addr && !src_addr) ||
+- (!src_addr && !dest_addr && !make_addr && !make_opts)) {
++ if ((src_addr && !dest_addr) ||
++ (!src_addr && !dest_addr && !make_addr && !make_opts)) {
+ show_usage(argv[0]);
+ exit(1);
+ }
+
+- if (src_addr)
++ if (dst_addr)
+ ret = resolve(argv[0]);
+
+ if (!ret && make_addr)
+diff --git a/src/libacm.c b/src/libacm.c
+index 59a181b..620e565 100644
+--- a/src/libacm.c
++++ b/src/libacm.c
+@@ -131,7 +131,7 @@ static int acm_format_resp(struct acm_resolve_msg *msg,
+ (*count)++;
+ break;
+ default:
+- goto err;
++ break;
+ }
+ }
+
+@@ -142,45 +142,54 @@ err:
+ return -1;
+ }
+
++static int acm_format_ep_addr(struct acm_ep_addr_data *data, uint8_t *addr,
++ uint8_t type, uint32_t flags)
++{
++ data->type = type;
++ data->flags = flags;
++
++ switch (type) {
++ case ACM_EP_INFO_NAME:
++ strncpy((char *) data->info.name, (char *) addr, ACM_MAX_ADDRESS);
++ break;
++ case ACM_EP_INFO_ADDRESS_IP:
++ memcpy(data->info.addr, &((struct sockaddr_in *) addr)->sin_addr, 4);
++ break;
++ case ACM_EP_INFO_ADDRESS_IP6:
++ memcpy(data->info.addr, &((struct sockaddr_in6 *) addr)->sin6_addr, 16);
++ break;
++ default:
++ return -1;
++ }
++
++ return 0;
++}
+ static int acm_resolve(uint8_t *src, uint8_t *dest, uint8_t type,
+ struct ibv_path_data **paths, int *count, uint32_t flags)
+ {
+ struct acm_msg msg;
+ struct acm_resolve_msg *resolve_msg = (struct acm_resolve_msg *) &msg;
+ struct acm_ep_addr_data *src_data, *dest_data;
+- int ret;
++ int ret, cnt = 0;
+
+ lock_acquire(&lock);
+ memset(&msg, 0, sizeof msg);
+ msg.hdr.version = ACM_VERSION;
+ msg.hdr.opcode = ACM_OP_RESOLVE;
+- msg.hdr.length = ACM_MSG_HDR_LENGTH + (2 * ACM_MSG_EP_LENGTH);
+
+- src_data = &resolve_msg->data[0];
+- dest_data = &resolve_msg->data[1];
+-
+- src_data->type = type;
+- src_data->flags = ACM_EP_FLAG_SOURCE;
+- dest_data->type = type;
+- dest_data->flags = ACM_EP_FLAG_DEST | flags;
++ if (src) {
++ ret = acm_format_ep_addr(&resolve_msg->data[cnt++], src, type,
++ ACM_EP_FLAG_SOURCE);
++ if (ret)
++ goto out;
++ }
+
+- switch (type) {
+- case ACM_EP_INFO_NAME:
+- strncpy((char *) src_data->info.name, (char *) src, ACM_MAX_ADDRESS);
+- strncpy((char *) dest_data->info.name, (char *) dest, ACM_MAX_ADDRESS);
+- break;
+- case ACM_EP_INFO_ADDRESS_IP:
+- memcpy(src_data->info.addr, &((struct sockaddr_in *) src)->sin_addr, 4);
+- memcpy(dest_data->info.addr, &((struct sockaddr_in *) dest)->sin_addr, 4);
+- break;
+- case ACM_EP_INFO_ADDRESS_IP6:
+- memcpy(src_data->info.addr, &((struct sockaddr_in6 *) src)->sin6_addr, 16);
+- memcpy(dest_data->info.addr, &((struct sockaddr_in6 *) dest)->sin6_addr, 16);
+- break;
+- default:
+- ret = -1;
++ ret = acm_format_ep_addr(&resolve_msg->data[cnt++], dest, type,
++ ACM_EP_FLAG_DEST | flags);
++ if (ret)
+ goto out;
+- }
++
++ msg.hdr.length = ACM_MSG_HDR_LENGTH + (cnt * ACM_MSG_EP_LENGTH);
+
+ ret = send(sock, (char *) &msg, msg.hdr.length, 0);
+ if (ret != msg.hdr.length)
+++ /dev/null
-Bottom: 6b1a8889e0c9bde043dfd2126fed3c613bff07a0
-Top: f60ed9288e7252a96dc54138944bb578264abc39
-Author: Sean Hefty <sean.hefty@intel.com>
-Date: 2010-12-06 16:41:45 -0800
-
-Refresh of acme_dest
-
----
-
-diff --git a/man/ib_acme.1 b/man/ib_acme.1
-index 52000a3..56c49f0 100644
---- a/man/ib_acme.1
-+++ b/man/ib_acme.1
-@@ -4,7 +4,7 @@ ib_acme \- test and configuration utility for the IB ACM
- .SH SYNOPSIS\r
- .sp\r
- .nf\r
--\fIib_acme\fR [-f addr_format] -s src_addr -d dest_addr [-v]\r
-+\fIib_acme\fR [-f addr_format] [-s src_addr] -d dest_addr [-v]\r
- .fi\r
- .nf\r
- \fIib_acme\fR [-G] [-O]\r
-diff --git a/src/acme.c b/src/acme.c
-index 3ee2073..07294bf 100644
---- a/src/acme.c
-+++ b/src/acme.c
-@@ -68,7 +68,7 @@ static void show_usage(char *program)
- printf("usage 1: %s\n", program);
- printf(" [-f addr_format] - i(p), n(ame), or l(id)\n");
- printf(" default: 'i'\n");
-- printf(" -s src_addr - format defined by -f option\n");
-+ printf(" [-s src_addr] - format defined by -f option\n");
- printf(" -d dest_addr - format defined by -f option\n");
- printf(" [-v] - verify ACM response against SA query response\n");
- printf(" [-c] - read ACM cached data only\n")
-@@ -434,13 +434,19 @@ static int resolve_ip(struct ibv_path_record *path)
- {
- struct ibv_path_data *paths;
- struct sockaddr_in src, dest;
-+ struct sockaddr *saddr;
- int ret, count;
-
-- src.sin_family = AF_INET;
-- ret = inet_pton(AF_INET, src_addr, &src.sin_addr);
-- if (ret <= 0) {
-- printf("inet_pton error on source address (%s): 0x%x\n", src_addr, ret);
-- return ret;
-+ if (src_addr) {
-+ src.sin_family = AF_INET;
-+ ret = inet_pton(AF_INET, src_addr, &src.sin_addr);
-+ if (ret <= 0) {
-+ printf("inet_pton error on source address (%s): 0x%x\n", src_addr, ret);
-+ return ret;
-+ }
-+ saddr = (struct sockaddr *) &src;
-+ } else {
-+ saddr = NULL;
- }
-
- dest.sin_family = AF_INET;
-@@ -450,7 +456,7 @@ static int resolve_ip(struct ibv_path_record *path)
- return ret;
- }
-
-- ret = ib_acm_resolve_ip((struct sockaddr *) &src, (struct sockaddr *) &dest,
-+ ret = ib_acm_resolve_ip(saddr, (struct sockaddr *) &dest,
- &paths, &count, get_resolve_flags());
- if (ret) {
- printf("ib_acm_resolve_ip failed: 0x%x\n", ret);
-@@ -601,13 +607,13 @@ int CDECL_FUNC main(int argc, char **argv)
- }
- }
-
-- if ((src_addr && !dest_addr) || (dest_addr && !src_addr) ||
-- (!src_addr && !dest_addr && !make_addr && !make_opts)) {
-+ if ((src_addr && !dest_addr) ||
-+ (!src_addr && !dest_addr && !make_addr && !make_opts)) {
- show_usage(argv[0]);
- exit(1);
- }
-
-- if (src_addr)
-+ if (dst_addr)
- ret = resolve(argv[0]);
-
- if (!ret && make_addr)
-diff --git a/src/libacm.c b/src/libacm.c
-index 59a181b..620e565 100644
---- a/src/libacm.c
-+++ b/src/libacm.c
-@@ -131,7 +131,7 @@ static int acm_format_resp(struct acm_resolve_msg *msg,
- (*count)++;
- break;
- default:
-- goto err;
-+ break;
- }
- }
-
-@@ -142,45 +142,54 @@ err:
- return -1;
- }
-
-+static int acm_format_ep_addr(struct acm_ep_addr_data *data, uint8_t *addr,
-+ uint8_t type, uint32_t flags)
-+{
-+ data->type = type;
-+ data->flags = flags;
-+
-+ switch (type) {
-+ case ACM_EP_INFO_NAME:
-+ strncpy((char *) data->info.name, (char *) addr, ACM_MAX_ADDRESS);
-+ break;
-+ case ACM_EP_INFO_ADDRESS_IP:
-+ memcpy(data->info.addr, &((struct sockaddr_in *) addr)->sin_addr, 4);
-+ break;
-+ case ACM_EP_INFO_ADDRESS_IP6:
-+ memcpy(data->info.addr, &((struct sockaddr_in6 *) addr)->sin6_addr, 16);
-+ break;
-+ default:
-+ return -1;
-+ }
-+
-+ return 0;
-+}
- static int acm_resolve(uint8_t *src, uint8_t *dest, uint8_t type,
- struct ibv_path_data **paths, int *count, uint32_t flags)
- {
- struct acm_msg msg;
- struct acm_resolve_msg *resolve_msg = (struct acm_resolve_msg *) &msg;
- struct acm_ep_addr_data *src_data, *dest_data;
-- int ret;
-+ int ret, cnt = 0;
-
- lock_acquire(&lock);
- memset(&msg, 0, sizeof msg);
- msg.hdr.version = ACM_VERSION;
- msg.hdr.opcode = ACM_OP_RESOLVE;
-- msg.hdr.length = ACM_MSG_HDR_LENGTH + (2 * ACM_MSG_EP_LENGTH);
-
-- src_data = &resolve_msg->data[0];
-- dest_data = &resolve_msg->data[1];
--
-- src_data->type = type;
-- src_data->flags = ACM_EP_FLAG_SOURCE;
-- dest_data->type = type;
-- dest_data->flags = ACM_EP_FLAG_DEST | flags;
-+ if (src) {
-+ ret = acm_format_ep_addr(&resolve_msg->data[cnt++], src, type,
-+ ACM_EP_FLAG_SOURCE);
-+ if (ret)
-+ goto out;
-+ }
-
-- switch (type) {
-- case ACM_EP_INFO_NAME:
-- strncpy((char *) src_data->info.name, (char *) src, ACM_MAX_ADDRESS);
-- strncpy((char *) dest_data->info.name, (char *) dest, ACM_MAX_ADDRESS);
-- break;
-- case ACM_EP_INFO_ADDRESS_IP:
-- memcpy(src_data->info.addr, &((struct sockaddr_in *) src)->sin_addr, 4);
-- memcpy(dest_data->info.addr, &((struct sockaddr_in *) dest)->sin_addr, 4);
-- break;
-- case ACM_EP_INFO_ADDRESS_IP6:
-- memcpy(src_data->info.addr, &((struct sockaddr_in6 *) src)->sin6_addr, 16);
-- memcpy(dest_data->info.addr, &((struct sockaddr_in6 *) dest)->sin6_addr, 16);
-- break;
-- default:
-- ret = -1;
-+ ret = acm_format_ep_addr(&resolve_msg->data[cnt++], dest, type,
-+ ACM_EP_FLAG_DEST | flags);
-+ if (ret)
- goto out;
-- }
-+
-+ msg.hdr.length = ACM_MSG_HDR_LENGTH + (cnt * ACM_MSG_EP_LENGTH);
-
- ret = send(sock, (char *) &msg, msg.hdr.length, 0);
- if (ret != msg.hdr.length)