The linux cma provider provides support for named network devices, such as 'ib0' or 'eth0'. This allows the same dapl configuration file to be used easily across a cluster.
To allow similar support on Windows, allow users to specify the device name 'rdma_devN' in the dapl.conf file. The given index, N, is map to a corresponding IP address that is associated with an RDMA device. Signed-off-by: Sean Hefty <[email protected]> --- diff -up -r -X \mshefty\scm\winof\trunk\docs\dontdiff.txt -I '\$Id:' trunk\ulp\dapl2/dapl/openib_cma/dapl_ib_util.c branches\winverbs\ulp\dapl2/dapl/openib_cma/dapl_ib_util.c --- trunk\ulp\dapl2/dapl/openib_cma/dapl_ib_util.c 2009-05-01 10:18:28.000000000 -0700 +++ branches\winverbs\ulp\dapl2/dapl/openib_cma/dapl_ib_util.c 2009-06-02 15:26:19.534649800 -0700 @@ -57,10 +57,50 @@ struct dapl_llist_entry *g_hca_list; #if defined(_WIN64) || defined(_WIN32) #include "..\..\..\..\..\etc\user\comp_channel.cpp" #include "..\..\..\..\..\etc\user\dlist.c" +#include <rdma\winverbs.h> -#define getipaddr_netdev(x,y,z) -1 struct ibvw_windata windata; +static int getipaddr_netdev(char *name, char *addr, int addr_len) +{ + IWVProvider *prov; + WV_DEVICE_ADDRESS devaddr; + struct addrinfo *res, *ai; + HRESULT hr; + int index; + + if (strncmp(name, "rdma_dev", 8)) { + return EINVAL; + } + + index = atoi(name + 8); + + hr = WvGetObject(&IID_IWVProvider, (LPVOID *) &prov); + if (FAILED(hr)) { + return hr; + } + + hr = getaddrinfo("..localmachine", NULL, NULL, &res); + if (hr) { + goto release; + } + + for (ai = res; ai; ai = ai->ai_next) { + hr = prov->lpVtbl->TranslateAddress(prov, ai->ai_addr, &devaddr); + if (SUCCEEDED(hr) && (ai->ai_addrlen <= addr_len) && (index-- == 0)) { + memcpy(addr, ai->ai_addr, ai->ai_addrlen); + goto free; + } + } + hr = ENODEV; + +free: + freeaddrinfo(res); +release: + prov->lpVtbl->Release(prov); + return hr; +} + static int dapls_os_init(void) { return ibvw_get_windata(&windata, IBVW_WINDATA_VERSION); diff -up -r -X \mshefty\scm\winof\trunk\docs\dontdiff.txt -I '\$Id:' trunk\ulp\dapl2/dapl/openib_cma/SOURCES branches\winverbs\ulp\dapl2/dapl/openib_cma/SOURCES --- trunk\ulp\dapl2/dapl/openib_cma/SOURCES 2009-05-27 07:25:19.000000000 -0700 +++ branches\winverbs\ulp\dapl2/dapl/openib_cma/SOURCES 2009-06-02 10:38:04.799012200 -0700 @@ -45,10 +45,12 @@ TARGETLIBS= \ $(SDK_LIB_PATH)\ws2_32.lib \ !if $(FREEBUILD) $(TARGETPATH)\*\dat2.lib \ + $(TARGETPATH)\*\winverbs.lib \ $(TARGETPATH)\*\libibverbs.lib \ $(TARGETPATH)\*\librdmacm.lib !else $(TARGETPATH)\*\dat2d.lib \ + $(TARGETPATH)\*\winverbsd.lib \ $(TARGETPATH)\*\libibverbsd.lib \ $(TARGETPATH)\*\librdmacmd.lib !endif _______________________________________________ general mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
