From: Hal Rosenstock Date: Fri, 19 Jul 2013 18:30:04 +0000 (-0400) Subject: [ibacm] Add support for name cache X-Git-Tag: v1.0.8~8 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=0768755e238f2337bc0f5eae98cfa0c9b61d5e5d;p=~shefty%2Fibacm.git [ibacm] Add support for name cache Similar to IPv4 and IPv6 preload, (host)name cache preload is now supported in addr_preload_file when acm_hosts is specified for addr_preload setting. Signed-off-by: Hal Rosenstock Signed-off-by: Sean Hefty --- diff --git a/acm_notes.txt b/acm_notes.txt index d204484..3f24322 100644 --- a/acm_notes.txt +++ b/acm_notes.txt @@ -136,7 +136,7 @@ none which does not preload these caches. See dump_pr.notes.txt in dump_pr for more information on the opensm_full_v1 file format and how to configure OpenSM to generate this file. -Additional IPv4 and IPv6 caches can be be preloaded by using the -addr_preload option. The default is none which does not preload these +Additionally, the name, IPv4, and IPv6 caches can be be preloaded by using +the addr_preload option. The default is none which does not preload these caches. To preload these caches, set this option to acm_hosts and configure the addr_data_file appropriately. diff --git a/ibacm_hosts.data b/ibacm_hosts.data index 9011691..78b978d 100644 --- a/ibacm_hosts.data +++ b/ibacm_hosts.data @@ -3,10 +3,13 @@ # Entry format is: # address IB GID # +# The address may be one of the following: +# host_name - ascii character string, up to 31 characters # address - IPv4 or IPv6 formatted address # # There can be multiple entries for a single IB GID # # Samples: +# luna3 fe80::8:f104:39a:169 # 192.168.1.3 fe80::8:f104:39a:169 # fe80::208:f104:39a:169 fe80::8:f104:39a:169 diff --git a/man/ibacm.1 b/man/ibacm.1 index 0ff58a2..fb15752 100644 --- a/man/ibacm.1 +++ b/man/ibacm.1 @@ -157,8 +157,8 @@ See dump_pr.notes.txt in dump_pr for more information on the full_opensm_v1 file format and how to configure OpenSM to generate this file. .P -Additional IPv4 and IPv6 caches can be be preloaded by using the -addr_preload option. The default is none which does not preload these +Additionally, the name, IPv4, and IPv6 caches can be be preloaded by using +the addr_preload option. The default is none which does not preload these caches. To preload these caches, set this option to acm_hosts and configure the addr_data_file appropriately. .SH "SEE ALSO" diff --git a/src/acm.c b/src/acm.c index 7f926b4..09051dc 100644 --- a/src/acm.c +++ b/src/acm.c @@ -2832,20 +2832,18 @@ static void acm_parse_hosts_file(struct acm_ep *ep) acm_log(0, "ERROR - %s is not IB GID\n", gid); continue; } + memset(name, 0, ACM_MAX_ADDRESS); if (inet_pton(AF_INET, addr, &ip_addr) > 0) { addr_type = ACM_ADDRESS_IP; + memcpy(name, &ip_addr, 4); } else if (inet_pton(AF_INET6, addr, &ip_addr) > 0) { addr_type = ACM_ADDRESS_IP6; + memcpy(name, &ip_addr, sizeof(ip_addr)); } else { - acm_log(0, "ERROR - %s is not IP address\n", addr); - continue; + addr_type = ACM_ADDRESS_NAME; + strncpy((char *)name, addr, ACM_MAX_ADDRESS); } - memset(name, 0, ACM_MAX_ADDRESS); - if (addr_type == ACM_ADDRESS_IP) - memcpy(name, &ip_addr, 4); - else - memcpy(name, &ip_addr, sizeof(ip_addr)); dest = acm_acquire_dest(ep, addr_type, name); if (!dest) { acm_log(0, "ERROR - unable to create dest %s\n", addr);