query_req.query_type = IB_QUERY_USER_DEFINED;\r
query_req.p_query_input = &user_query;\r
query_req.port_guid = port->guid;\r
- query_req.timeout_ms = 500;\r
- query_req.retry_cnt = 4;\r
+ query_req.timeout_ms = g_sa_timeout;\r
+ query_req.retry_cnt = g_sa_retries;\r
query_req.flags = IB_FLAGS_SYNC;\r
query_req.query_context = &query_context;\r
query_req.pfn_query_cb = query_guid_callback;\r
query_req.query_type = IB_QUERY_PATH_REC_BY_GIDS;\r
query_req.p_query_input = &user_query;\r
query_req.port_guid = port->guid;\r
- query_req.timeout_ms = 500;\r
- query_req.retry_cnt = 4;\r
+ query_req.timeout_ms = g_sa_timeout;\r
+ query_req.retry_cnt = g_sa_retries;\r
query_req.flags = IB_FLAGS_SYNC;\r
query_req.query_context = &query_context;\r
query_req.pfn_query_cb = query_pr_callback;\r
static DWORD no_read = 0;\r
uint32_t g_max_inline = 0xFFFFFFFF;\r
uint32_t g_max_poll = 500;\r
+uint32_t g_sa_timeout = 500;\r
+uint32_t g_sa_retries = 4;\r
+int g_connect_err = WSAEADDRNOTAVAIL;\r
\r
\r
/*\r
if( i && i <= 16 )\r
g_max_poll = _tcstoul( env_var, NULL, 10 );\r
\r
+ i = GetEnvironmentVariable( "IBWSD_SA_RETRY", env_var, sizeof(env_var) );\r
+ if( i && i <= 16 )\r
+ g_sa_retries = _tcstoul( env_var, NULL, 10 );\r
+\r
+ i = GetEnvironmentVariable( "IBWSD_SA_TIMEOUT", env_var, sizeof(env_var) );\r
+ if( i && i <= 16 )\r
+ g_sa_timeout = _tcstoul( env_var, NULL, 10 );\r
+\r
+ i = GetEnvironmentVariable( "IBWSD_NO_IPOIB", env_var, sizeof(env_var) );\r
+ if( i )\r
+ g_connect_err = WSAENETDOWN;\r
+\r
if( init_globals() )\r
return FALSE;\r
\r
IBSP_ERROR_EXIT(\r
("query_guid_address failed for IP %08x\n",\r
addr->sin_addr.s_addr) );\r
- *lpErrno = WSAEADDRNOTAVAIL;\r
+ *lpErrno = g_connect_err;\r
return SOCKET_ERROR;\r
}\r
\r
{\r
IBSP_ERROR_EXIT(\r
("query_pr failed for IP %08x\n", addr->sin_addr.s_addr) );\r
- *lpErrno = WSAEADDRNOTAVAIL;\r
+ *lpErrno = g_connect_err;\r
return SOCKET_ERROR;\r
}\r
\r
\r
extern uint32_t g_max_inline;\r
extern uint32_t g_max_poll;\r
+extern uint32_t g_sa_timeout;\r
+extern uint32_t g_sa_retries;\r
+/* Allow users to control SA timeouts behavior - fall back on IPoIB or fail. */\r
+extern int g_connect_err;\r
\r
#endif /* IBSPDLL_H */\r