*
* You should have received a copy of the GNU General Public License
* version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
*
* GPL HEADER END
*/
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
- * Copyright (c) 2011, 2014, Intel Corporation.
+ * Copyright (c) 2011, 2015, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
snprintf(str, size, "%u", addr);
}
-static void
-libcfs_hexnum_addr2str(__u32 addr, char *str, size_t size)
-{
- snprintf(str, size, "0x%x", addr);
-}
-
static int
libcfs_num_str2addr(const char *str, int nob, __u32 *addr)
{
static bool cfs_num_is_contiguous(struct list_head *nidlist);
static void cfs_num_min_max(struct list_head *nidlist, __u32 *min, __u32 *max);
-static struct netstrfns libcfs_netstrfns[] = {
- {/* .nf_type */ LOLND,
- /* .nf_name */ "lo",
- /* .nf_modname */ "klolnd",
- /* .nf_addr2str */ libcfs_decnum_addr2str,
- /* .nf_str2addr */ libcfs_lo_str2addr,
- /* .nf_parse_addr*/ libcfs_num_parse,
- /* .nf_print_addrlist*/ libcfs_num_addr_range_print,
- /* .nf_match_addr*/ libcfs_num_match,
- /* .nf_is_contiguous */ cfs_num_is_contiguous,
- /* .nf_min_max */ cfs_num_min_max},
- {/* .nf_type */ SOCKLND,
- /* .nf_name */ "tcp",
- /* .nf_modname */ "ksocklnd",
- /* .nf_addr2str */ libcfs_ip_addr2str,
- /* .nf_str2addr */ libcfs_ip_str2addr,
- /* .nf_parse_addrlist*/ cfs_ip_addr_parse,
- /* .nf_print_addrlist*/ libcfs_ip_addr_range_print,
- /* .nf_match_addr*/ cfs_ip_addr_match,
- /* .nf_is_contiguous */ cfs_ip_is_contiguous,
- /* .nf_min_max */ cfs_ip_min_max},
- {/* .nf_type */ O2IBLND,
- /* .nf_name */ "o2ib",
- /* .nf_modname */ "ko2iblnd",
- /* .nf_addr2str */ libcfs_ip_addr2str,
- /* .nf_str2addr */ libcfs_ip_str2addr,
- /* .nf_parse_addrlist*/ cfs_ip_addr_parse,
- /* .nf_print_addrlist*/ libcfs_ip_addr_range_print,
- /* .nf_match_addr*/ cfs_ip_addr_match,
- /* .nf_is_contiguous */ cfs_ip_is_contiguous,
- /* .nf_min_max */ cfs_ip_min_max},
- {/* .nf_type */ CIBLND,
- /* .nf_name */ "cib",
- /* .nf_modname */ "kciblnd",
- /* .nf_addr2str */ libcfs_ip_addr2str,
- /* .nf_str2addr */ libcfs_ip_str2addr,
- /* .nf_parse_addrlist*/ cfs_ip_addr_parse,
- /* .nf_print_addrlist*/ libcfs_ip_addr_range_print,
- /* .nf_match_addr*/ cfs_ip_addr_match,
- /* .nf_is_contiguous */ cfs_ip_is_contiguous,
- /* .nf_min_max */ cfs_ip_min_max},
- {/* .nf_type */ OPENIBLND,
- /* .nf_name */ "openib",
- /* .nf_modname */ "kopeniblnd",
- /* .nf_addr2str */ libcfs_ip_addr2str,
- /* .nf_str2addr */ libcfs_ip_str2addr,
- /* .nf_parse_addrlist*/ cfs_ip_addr_parse,
- /* .nf_print_addrlist*/ libcfs_ip_addr_range_print,
- /* .nf_match_addr*/ cfs_ip_addr_match,
- /* .nf_is_contiguous */ cfs_ip_is_contiguous,
- /* .nf_min_max */ cfs_ip_min_max},
- {/* .nf_type */ IIBLND,
- /* .nf_name */ "iib",
- /* .nf_modname */ "kiiblnd",
- /* .nf_addr2str */ libcfs_ip_addr2str,
- /* .nf_str2addr */ libcfs_ip_str2addr,
- /* .nf_parse_addrlist*/ cfs_ip_addr_parse,
- /* .nf_print_addrlist*/ libcfs_ip_addr_range_print,
- /* .nf_match_addr*/ cfs_ip_addr_match,
- /* .nf_is_contiguous */ cfs_ip_is_contiguous,
- /* .nf_min_max */ cfs_ip_min_max},
- {/* .nf_type */ VIBLND,
- /* .nf_name */ "vib",
- /* .nf_modname */ "kviblnd",
- /* .nf_addr2str */ libcfs_ip_addr2str,
- /* .nf_str2addr */ libcfs_ip_str2addr,
- /* .nf_parse_addrlist*/ cfs_ip_addr_parse,
- /* .nf_print_addrlist*/ libcfs_ip_addr_range_print,
- /* .nf_match_addr*/ cfs_ip_addr_match,
- /* .nf_is_contiguous */ cfs_ip_is_contiguous,
- /* .nf_min_max */ cfs_ip_min_max},
- {/* .nf_type */ RALND,
- /* .nf_name */ "ra",
- /* .nf_modname */ "kralnd",
- /* .nf_addr2str */ libcfs_ip_addr2str,
- /* .nf_str2addr */ libcfs_ip_str2addr,
- /* .nf_parse_addrlist*/ cfs_ip_addr_parse,
- /* .nf_print_addrlist*/ libcfs_ip_addr_range_print,
- /* .nf_match_addr*/ cfs_ip_addr_match,
- /* .nf_is_contiguous */ cfs_ip_is_contiguous,
- /* .nf_min_max */ cfs_ip_min_max},
- {/* .nf_type */ QSWLND,
- /* .nf_name */ "elan",
- /* .nf_modname */ "kqswlnd",
- /* .nf_addr2str */ libcfs_decnum_addr2str,
- /* .nf_str2addr */ libcfs_num_str2addr,
- /* .nf_parse_addrlist*/ libcfs_num_parse,
- /* .nf_print_addrlist*/ libcfs_num_addr_range_print,
- /* .nf_match_addr*/ libcfs_num_match,
- /* .nf_is_contiguous */ cfs_num_is_contiguous,
- /* .nf_min_max */ cfs_num_min_max},
- {/* .nf_type */ GMLND,
- /* .nf_name */ "gm",
- /* .nf_modname */ "kgmlnd",
- /* .nf_addr2str */ libcfs_hexnum_addr2str,
- /* .nf_str2addr */ libcfs_num_str2addr,
- /* .nf_parse_addrlist*/ libcfs_num_parse,
- /* .nf_print_addrlist*/ libcfs_num_addr_range_print,
- /* .nf_match_addr*/ libcfs_num_match,
- /* .nf_is_contiguous */ cfs_num_is_contiguous,
- /* .nf_min_max */ cfs_num_min_max},
- {/* .nf_type */ MXLND,
- /* .nf_name */ "mx",
- /* .nf_modname */ "kmxlnd",
- /* .nf_addr2str */ libcfs_ip_addr2str,
- /* .nf_str2addr */ libcfs_ip_str2addr,
- /* .nf_parse_addrlist*/ cfs_ip_addr_parse,
- /* .nf_print_addrlist*/ libcfs_ip_addr_range_print,
- /* .nf_match_addr*/ cfs_ip_addr_match,
- /* .nf_is_contiguous */ cfs_ip_is_contiguous,
- /* .nf_min_max */ cfs_ip_min_max},
- {/* .nf_type */ PTLLND,
- /* .nf_name */ "ptl",
- /* .nf_modname */ "kptllnd",
- /* .nf_addr2str */ libcfs_decnum_addr2str,
- /* .nf_str2addr */ libcfs_num_str2addr,
- /* .nf_parse_addrlist*/ libcfs_num_parse,
- /* .nf_print_addrlist*/ libcfs_num_addr_range_print,
- /* .nf_match_addr*/ libcfs_num_match,
- /* .nf_is_contiguous */ cfs_num_is_contiguous,
- /* .nf_min_max */ cfs_num_min_max},
- {/* .nf_type */ GNILND,
- /* .nf_name */ "gni",
- /* .nf_modname */ "kgnilnd",
- /* .nf_addr2str */ libcfs_decnum_addr2str,
- /* .nf_str2addr */ libcfs_num_str2addr,
- /* .nf_parse_addrlist*/ libcfs_num_parse,
- /* .nf_print_addrlist*/ libcfs_num_addr_range_print,
- /* .nf_match_addr*/ libcfs_num_match,
- /* .nf_is_contiguous */ cfs_num_is_contiguous,
- /* .nf_min_max */ cfs_num_min_max},
- {/* .nf_type */ GNIIPLND,
- /* .nf_name */ "gip",
- /* .nf_modname */ "kgnilnd",
- /* .nf_addr2str */ libcfs_ip_addr2str,
- /* .nf_str2addr */ libcfs_ip_str2addr,
- /* .nf_parse_addrlist*/ cfs_ip_addr_parse,
- /* .nf_print_addrlist*/ libcfs_ip_addr_range_print,
- /* .nf_match_addr*/ cfs_ip_addr_match,
- /* .nf_is_contiguous */ cfs_ip_is_contiguous,
- /* .nf_min_max */ cfs_ip_min_max},
- /* placeholder for net0 alias. It MUST BE THE LAST ENTRY */
- {/* .nf_type */ -1},
+static struct netstrfns libcfs_netstrfns[] = {
+ {
+ .nf_type = LOLND,
+ .nf_name = "lo",
+ .nf_modname = "klolnd",
+ .nf_addr2str = libcfs_decnum_addr2str,
+ .nf_str2addr = libcfs_lo_str2addr,
+ .nf_parse_addrlist = libcfs_num_parse,
+ .nf_print_addrlist = libcfs_num_addr_range_print,
+ .nf_match_addr = libcfs_num_match,
+ .nf_is_contiguous = cfs_num_is_contiguous,
+ .nf_min_max = cfs_num_min_max
+ },
+ {
+ .nf_type = SOCKLND,
+ .nf_name = "tcp",
+ .nf_modname = "ksocklnd",
+ .nf_addr2str = libcfs_ip_addr2str,
+ .nf_str2addr = libcfs_ip_str2addr,
+ .nf_parse_addrlist = cfs_ip_addr_parse,
+ .nf_print_addrlist = libcfs_ip_addr_range_print,
+ .nf_match_addr = cfs_ip_addr_match,
+ .nf_is_contiguous = cfs_ip_is_contiguous,
+ .nf_min_max = cfs_ip_min_max
+ },
+ {
+ .nf_type = O2IBLND,
+ .nf_name = "o2ib",
+ .nf_modname = "ko2iblnd",
+ .nf_addr2str = libcfs_ip_addr2str,
+ .nf_str2addr = libcfs_ip_str2addr,
+ .nf_parse_addrlist = cfs_ip_addr_parse,
+ .nf_print_addrlist = libcfs_ip_addr_range_print,
+ .nf_match_addr = cfs_ip_addr_match,
+ .nf_is_contiguous = cfs_ip_is_contiguous,
+ .nf_min_max = cfs_ip_min_max
+ },
+ {
+ .nf_type = GNILND,
+ .nf_name = "gni",
+ .nf_modname = "kgnilnd",
+ .nf_addr2str = libcfs_decnum_addr2str,
+ .nf_str2addr = libcfs_num_str2addr,
+ .nf_parse_addrlist = libcfs_num_parse,
+ .nf_print_addrlist = libcfs_num_addr_range_print,
+ .nf_match_addr = libcfs_num_match,
+ .nf_is_contiguous = cfs_num_is_contiguous,
+ .nf_min_max = cfs_num_min_max
+ },
+ {
+ .nf_type = GNIIPLND,
+ .nf_name = "gip",
+ .nf_modname = "kgnilnd",
+ .nf_addr2str = libcfs_ip_addr2str,
+ .nf_str2addr = libcfs_ip_str2addr,
+ .nf_parse_addrlist = cfs_ip_addr_parse,
+ .nf_print_addrlist = libcfs_ip_addr_range_print,
+ .nf_match_addr = cfs_ip_addr_match,
+ .nf_is_contiguous = cfs_ip_is_contiguous,
+ .nf_min_max = cfs_ip_min_max
+ },
+ {
+ .nf_type = PTL4LND,
+ .nf_name = "ptlf",
+ .nf_modname = "kptl4lnd",
+ .nf_addr2str = libcfs_decnum_addr2str,
+ .nf_str2addr = libcfs_num_str2addr,
+ .nf_parse_addrlist = libcfs_num_parse,
+ .nf_print_addrlist = libcfs_num_addr_range_print,
+ .nf_match_addr = libcfs_num_match,
+ .nf_is_contiguous = cfs_num_is_contiguous,
+ .nf_min_max = cfs_num_min_max
+ }
};
static const size_t libcfs_nnetstrfns =
for (i = 0; i < libcfs_nnetstrfns; i++) {
nf = &libcfs_netstrfns[i];
- if (nf->nf_type >= 0 &&
- !strncmp(name, nf->nf_name, strlen(nf->nf_name)))
+ if (!strncmp(name, nf->nf_name, strlen(nf->nf_name)))
return nf;
}
return NULL;
int i;
for (i = 0; i < libcfs_nnetstrfns; i++)
- if (libcfs_netstrfns[i].nf_type >= 0 &&
- !strcmp(libcfs_netstrfns[i].nf_name, name))
+ if (!strcmp(libcfs_netstrfns[i].nf_name, name))
return &libcfs_netstrfns[i];
return NULL;
for (i = 0; i < libcfs_nnetstrfns; i++) {
nf = &libcfs_netstrfns[i];
- if (nf->nf_type >= 0 &&
- !strncmp(str, nf->nf_name, strlen(nf->nf_name)))
+ if (!strncmp(str, nf->nf_name, strlen(nf->nf_name)))
break;
}