Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1217 lines
34 KiB

  1. #include "precomp.h"
  2. DWORD ConverWideToMultibyte(LPWSTR pwch, char **ppmbbuf)
  3. //++
  4. //Description:
  5. //Converts wide to multibyte
  6. //
  7. //Arguments:
  8. // IN LPWSTR
  9. // IN car **
  10. //
  11. //Return:
  12. // Success or failure
  13. //
  14. //Author:
  15. // Madhurima Pawar (mpawar) 10/15/01
  16. //--
  17. {
  18. char *ptempmbbuf = NULL;
  19. DWORD dwError = ERROR_SUCCESS;
  20. size_t size;
  21. size= wcstombs( NULL,
  22. pwch,
  23. wcslen(pwch));
  24. ptempmbbuf = (char *)malloc(size+1);
  25. //ptempmbbuf = (char *)malloc((sizeof(char)) * dwError);
  26. if(!ptempmbbuf)
  27. return GetLastError();
  28. size= wcstombs( ptempmbbuf,
  29. pwch,
  30. size);
  31. //strncpy(ptemp, ptempmbbuf, dwError);
  32. ptempmbbuf[size] = '\0';
  33. *ppmbbuf = ptempmbbuf;
  34. return dwError;
  35. }
  36. BOOL PrintNegPolDataList(
  37. CHECKLIST* pcheckList,
  38. IN PIPSEC_NEGPOL_DATA pIpsecNegPolData)
  39. //++
  40. //Description:
  41. //Prints Negotiation Policies
  42. //
  43. //Arguments:
  44. // IN CHECKLIST
  45. // IN PIPSEC_NEGPOL_DATA
  46. //
  47. //Return:
  48. // Success or failure
  49. //
  50. //Author:
  51. // Madhurima Pawar (mpawar) 10/15/01
  52. //--
  53. {
  54. BOOL bSoft=FALSE;
  55. wchar_t pszGUIDStr[BUFFER_SIZE]={0};
  56. _TCHAR pszStrTime[BUFFER_SIZE]={0};
  57. char * pmbbuf = NULL;
  58. //_TCHAR pszStrTruncated[BUFFER_SIZE]={0};
  59. DWORD i=0,
  60. dwError = 0;
  61. DWORD cnt;
  62. NETDIAG_PARAMS* pParams = pcheckList->pParams;
  63. NETDIAG_RESULT* pResults = pcheckList->pResults;
  64. if(pIpsecNegPolData)
  65. {
  66. if(pIpsecNegPolData->pszIpsecName){
  67. dwError = ConverWideToMultibyte(pIpsecNegPolData->pszIpsecName, &pmbbuf);
  68. if(dwError){
  69. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  70. Nd_Verbose, IDS_SPD_MEM_ERROR,
  71. dwError);
  72. return S_FALSE ;
  73. }
  74. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  75. Nd_Verbose, SHW_STATIC_PRTNEGPOL_1,
  76. pmbbuf);
  77. FreeP(pmbbuf);
  78. }
  79. else
  80. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTNEGPOL_2);
  81. if(pIpsecNegPolData->pszDescription){
  82. dwError = ConverWideToMultibyte(pIpsecNegPolData->pszDescription, &pmbbuf);
  83. if(dwError){
  84. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  85. Nd_Verbose, IDS_SPD_MEM_ERROR,
  86. dwError);
  87. return S_FALSE ;
  88. }
  89. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose,
  90. SHW_STATIC_PRTPOLICY_4,pmbbuf);
  91. FreeP(pmbbuf);
  92. }
  93. else
  94. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose,
  95. SHW_STATIC_PRTPOLICY_5);
  96. PrintStorageInfoList(pcheckList, FALSE);
  97. if (!(IsEqualGUID(&pIpsecNegPolData->NegPolType,&GUID_NEGOTIATION_TYPE_DEFAULT)))
  98. {
  99. if(IsEqualGUID(&pIpsecNegPolData->NegPolAction,&GUID_NEGOTIATION_ACTION_NO_IPSEC))
  100. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTNEGPOL_3);
  101. else if(IsEqualGUID(&pIpsecNegPolData->NegPolAction,&GUID_NEGOTIATION_ACTION_BLOCK))
  102. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTNEGPOL_4);
  103. else
  104. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTNEGPOL_5);
  105. }
  106. for (cnt=0;cnt<pIpsecNegPolData->dwSecurityMethodCount;cnt++)
  107. if (CheckSoft(pIpsecNegPolData->pIpsecSecurityMethods[cnt]))
  108. {
  109. bSoft=TRUE;
  110. break;
  111. }
  112. if(bSoft)
  113. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTNEGPOL_8);
  114. else
  115. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTNEGPOL_9);
  116. if(IsEqualGUID(&pIpsecNegPolData->NegPolAction,&GUID_NEGOTIATION_ACTION_INBOUND_PASSTHRU))
  117. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTNEGPOL_6);
  118. else
  119. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTNEGPOL_7);
  120. if (pIpsecNegPolData->dwSecurityMethodCount )
  121. {
  122. if(pIpsecNegPolData->pIpsecSecurityMethods && pIpsecNegPolData->pIpsecSecurityMethods[0].PfsQMRequired)
  123. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTNEGPOL_16);
  124. else
  125. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTNEGPOL_17);
  126. }
  127. FormatTime((time_t)pIpsecNegPolData->dwWhenChanged, pszStrTime);
  128. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFILTERDATA_10,pszStrTime);
  129. i = BUFFER_SIZE;
  130. i=StringFromGUID2( &pIpsecNegPolData->NegPolIdentifier,
  131. (LPOLESTR)pszGUIDStr,i);
  132. dwError = ConverWideToMultibyte(pszGUIDStr, &pmbbuf);
  133. if(dwError){
  134. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  135. Nd_Verbose, IDS_SPD_MEM_ERROR,
  136. dwError);
  137. return S_FALSE ;
  138. }
  139. if(i>0 && (wcscmp(pszGUIDStr,L"")!=0))
  140. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose,
  141. SHW_STATIC_PRTFILTERDATA_9,pmbbuf);
  142. FreeP(pmbbuf);
  143. if (pIpsecNegPolData->dwSecurityMethodCount)
  144. {
  145. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTNEGPOL_11);
  146. //AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTNEGPOL_12);
  147. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTNEGPOL_13);
  148. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTNEGPOL_14);
  149. }
  150. for (cnt=0;cnt<pIpsecNegPolData->dwSecurityMethodCount;cnt++)
  151. if(pIpsecNegPolData->pIpsecSecurityMethods)
  152. PrintSecurityMethodsTable(
  153. pcheckList,
  154. pIpsecNegPolData->pIpsecSecurityMethods[cnt]);
  155. }
  156. return S_OK;
  157. }
  158. VOID PrintAlgoInfoTable(
  159. CHECKLIST* pcheckList,
  160. IN PIPSEC_ALGO_INFO Algos,
  161. IN DWORD dwNumAlgos)
  162. //++
  163. //Description:
  164. //Prints AlgoInformation
  165. //
  166. //Arguments:
  167. // IN CHECKLIST
  168. // IN PIPSEC_ALGO_INFO
  169. // IN DWORD
  170. //
  171. //Return:
  172. // none
  173. //
  174. //Author:
  175. // Madhurima Pawar (mpawar) 10/15/01
  176. //--
  177. {
  178. NETDIAG_PARAMS* pParams = pcheckList->pParams;
  179. NETDIAG_RESULT* pResults = pcheckList->pResults;
  180. if(dwNumAlgos==1)
  181. {
  182. if (Algos[0].operation==AUTHENTICATION)
  183. {
  184. if(Algos[0].algoIdentifier==AUTH_ALGO_MD5)
  185. {
  186. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_1);
  187. }
  188. else if(Algos[0].algoIdentifier==AUTH_ALGO_SHA1)
  189. {
  190. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_2);
  191. }
  192. else
  193. {
  194. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_3);
  195. }
  196. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_4);
  197. }
  198. else if (Algos[0].operation==ENCRYPTION)
  199. {
  200. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_3);
  201. if(Algos[0].secondaryAlgoIdentifier==HMAC_AUTH_ALGO_MD5)
  202. {
  203. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_8);
  204. }
  205. else if(Algos[0].secondaryAlgoIdentifier==HMAC_AUTH_ALGO_SHA1)
  206. {
  207. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_9);
  208. }
  209. else
  210. {
  211. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_10);
  212. }
  213. if(Algos[0].algoIdentifier==CONF_ALGO_DES)
  214. {
  215. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_11);
  216. }
  217. else if(Algos[0].algoIdentifier==CONF_ALGO_3_DES)
  218. {
  219. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_12);
  220. }
  221. else
  222. {
  223. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_13);
  224. }
  225. }
  226. }
  227. else if(dwNumAlgos==2)
  228. {
  229. if (Algos[0].operation==ENCRYPTION)
  230. {
  231. if (Algos[1].operation==AUTHENTICATION)
  232. {
  233. if(Algos[1].algoIdentifier==AUTH_ALGO_MD5)
  234. {
  235. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_1);
  236. }
  237. else
  238. {
  239. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_2);
  240. }
  241. }
  242. else
  243. {
  244. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_3);
  245. }
  246. if(Algos[0].secondaryAlgoIdentifier==HMAC_AUTH_ALGO_MD5)
  247. {
  248. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_8);
  249. }
  250. else if(Algos[0].secondaryAlgoIdentifier==HMAC_AUTH_ALGO_SHA1)
  251. {
  252. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_9);
  253. }
  254. else
  255. {
  256. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_10);
  257. }
  258. if(Algos[0].algoIdentifier==CONF_ALGO_DES)
  259. {
  260. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_11);
  261. }
  262. else if(Algos[0].algoIdentifier==CONF_ALGO_3_DES)
  263. {
  264. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_12);
  265. }
  266. else
  267. {
  268. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_13);
  269. }
  270. }
  271. else
  272. {
  273. if (Algos[0].operation==AUTHENTICATION)
  274. {
  275. if(Algos[0].algoIdentifier==AUTH_ALGO_MD5)
  276. {
  277. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_1);
  278. }
  279. else
  280. {
  281. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_2);
  282. }
  283. }
  284. else
  285. {
  286. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_3);
  287. }
  288. if(Algos[1].secondaryAlgoIdentifier==HMAC_AUTH_ALGO_MD5)
  289. {
  290. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_8);
  291. }
  292. else if(Algos[1].secondaryAlgoIdentifier==HMAC_AUTH_ALGO_SHA1)
  293. {
  294. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_9);
  295. }
  296. else
  297. {
  298. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_10);
  299. }
  300. if(Algos[1].algoIdentifier==CONF_ALGO_DES)
  301. {
  302. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_11);
  303. }
  304. else if(Algos[1].algoIdentifier==CONF_ALGO_3_DES)
  305. {
  306. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_12);
  307. }
  308. else
  309. {
  310. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_TAB_PRTALGO_13);
  311. }
  312. }
  313. }
  314. }
  315. VOID PrintLifeTimeTable(
  316. CHECKLIST* pcheckList,
  317. IN LIFETIME LifeTime)
  318. //++
  319. //Description:
  320. //Prints Life Time Table
  321. //
  322. //Arguments:
  323. // IN CHECKLIST
  324. // IN LIFETIME
  325. //
  326. //Return:
  327. // none
  328. //
  329. //Author:
  330. // Madhurima Pawar (mpawar) 10/15/01
  331. //--
  332. {
  333. NETDIAG_PARAMS* pParams = pcheckList->pParams;
  334. NETDIAG_RESULT* pResults = pcheckList->pResults;
  335. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  336. Nd_Verbose, SHW_STATIC_TAB_PRTLIFE_1,
  337. LifeTime.KeyExpirationTime,LifeTime.KeyExpirationBytes);
  338. }
  339. VOID PrintSecurityMethodsTable(
  340. CHECKLIST* pcheckList,
  341. IN IPSEC_SECURITY_METHOD IpsecSecurityMethods)
  342. //++
  343. //Description:
  344. //Prints Security Method Table
  345. //
  346. //Arguments:
  347. // IN CHECKLIST
  348. // IN IPSEC_SECURITY_METHOD
  349. //
  350. //Return:
  351. // none
  352. //
  353. //Author:
  354. // Madhurima Pawar (mpawar) 10/15/01
  355. //--
  356. {
  357. NETDIAG_PARAMS* pParams = pcheckList->pParams;
  358. NETDIAG_RESULT* pResults = pcheckList->pResults;
  359. if (!CheckSoft(IpsecSecurityMethods))
  360. {
  361. if(IpsecSecurityMethods.Algos)
  362. {
  363. PrintAlgoInfoTable( pcheckList,
  364. IpsecSecurityMethods.Algos,
  365. IpsecSecurityMethods.Count);
  366. }
  367. PrintLifeTimeTable(pcheckList, IpsecSecurityMethods.Lifetime);
  368. }
  369. }
  370. BOOL CheckSoft(
  371. IN IPSEC_SECURITY_METHOD IpsecSecurityMethods)
  372. //++
  373. //Description:
  374. //Checks for soft SA
  375. //
  376. //Arguments:
  377. // IN IPSEC_SECURITY_METHOD
  378. //
  379. //Return:
  380. // TRUE or FALSE
  381. //
  382. //Author:
  383. // Madhurima Pawar (mpawar) 10/15/01
  384. //--
  385. {
  386. BOOL bSoft=FALSE;
  387. if (IpsecSecurityMethods.Count==0)
  388. {
  389. bSoft=TRUE;
  390. }
  391. return bSoft;
  392. }
  393. HRESULT FormatTime(
  394. IN time_t t,
  395. OUT LPTSTR pszTimeStr)
  396. //++
  397. //Description:
  398. //Formats Time
  399. //
  400. //Arguments:
  401. // IN time_t
  402. // OUT LPTSTR
  403. //
  404. //Return:
  405. // HRESULT
  406. //
  407. //Author:
  408. // Madhurima Pawar (mpawar) 10/15/01
  409. //--
  410. {
  411. time_t timeCurrent = time(NULL);
  412. LONGLONG llTimeDiff = 0;
  413. FILETIME ftCurrent = {0};
  414. FILETIME ftLocal = {0};
  415. SYSTEMTIME SysTime;
  416. _TCHAR szBuff[256] = {0};
  417. _tcscpy(pszTimeStr, _TEXT(""));
  418. GetSystemTimeAsFileTime(&ftCurrent);
  419. llTimeDiff = (LONGLONG)t - (LONGLONG)timeCurrent;
  420. llTimeDiff *= 10000000;
  421. *((LONGLONG UNALIGNED64 *)&ftCurrent) += llTimeDiff;
  422. if (!FileTimeToLocalFileTime(&ftCurrent, &ftLocal ))
  423. {
  424. return HRESULT_FROM_WIN32(GetLastError());
  425. }
  426. if (!FileTimeToSystemTime( &ftLocal, &SysTime ))
  427. {
  428. return HRESULT_FROM_WIN32(GetLastError());
  429. }
  430. if (0 == GetDateFormat(LOCALE_USER_DEFAULT,
  431. 0,
  432. &SysTime,
  433. NULL,
  434. szBuff,
  435. sizeof(szBuff)))
  436. {
  437. return HRESULT_FROM_WIN32(GetLastError());
  438. }
  439. _tcscat(pszTimeStr,szBuff);
  440. _tcscat(pszTimeStr, _TEXT(" "));
  441. ZeroMemory(szBuff, sizeof(szBuff));
  442. if (0 == GetTimeFormat(LOCALE_USER_DEFAULT,
  443. 0,
  444. &SysTime,
  445. NULL,
  446. szBuff,
  447. sizeof(szBuff)))
  448. {
  449. return HRESULT_FROM_WIN32(GetLastError());
  450. }
  451. _tcscat(pszTimeStr,szBuff);
  452. return S_OK;
  453. }
  454. BOOL PrintAuthMethodsList(
  455. CHECKLIST *pcheckList,
  456. IN PIPSEC_AUTH_METHOD pIpsecAuthData)
  457. //++
  458. //Description:
  459. //Prints Auth Method List
  460. //
  461. //Arguments:
  462. // IN CHECKLIST
  463. // OUT PIPSEC_AUTH_METHOD
  464. //
  465. //Return:
  466. // TRUE or FALSE
  467. //
  468. //Author:
  469. // Madhurima Pawar (mpawar) 10/15/01
  470. //--
  471. {
  472. DWORD dwError = ERROR_SUCCESS;
  473. char * pmbbuf = NULL;
  474. NETDIAG_PARAMS* pParams = pcheckList->pParams;
  475. NETDIAG_RESULT* pResults = pcheckList->pResults;
  476. if(pIpsecAuthData)
  477. {
  478. if(pIpsecAuthData->dwAuthType==IKE_SSPI)
  479. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  480. Nd_Verbose,SHW_STATIC_PRTAUTH_1);
  481. else if( pIpsecAuthData->dwAuthType==IKE_RSA_SIGNATURE &&
  482. pIpsecAuthData->pszAuthMethod)
  483. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  484. Nd_Verbose,SHW_STATIC_PRTAUTH_2,
  485. pIpsecAuthData->pszAuthMethod);
  486. else if ( pIpsecAuthData->dwAuthType==IKE_PRESHARED_KEY &&
  487. pIpsecAuthData->pszAuthMethod){
  488. dwError = ConverWideToMultibyte( pIpsecAuthData->pszAuthMethod,
  489. &pmbbuf);
  490. if(dwError){
  491. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  492. Nd_Verbose, IDS_SPD_MEM_ERROR,
  493. dwError);
  494. return S_FALSE ;
  495. }
  496. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  497. Nd_Verbose,SHW_STATIC_PRTAUTH_3,
  498. pmbbuf);
  499. FreeP(pmbbuf);
  500. }
  501. else
  502. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  503. Nd_Verbose,SHW_STATIC_PRTAUTH_4);
  504. }
  505. return S_OK;
  506. }
  507. BOOL PrintFilterSpecList(
  508. CHECKLIST* pcheckList,
  509. IN PIPSEC_FILTER_SPEC pIpsecFilterSpec,
  510. IN PIPSEC_NFA_DATA pIpsecNFAData)
  511. //++
  512. //Description:
  513. //Prints Filter Spec List
  514. //
  515. //Arguments:
  516. // IN CHECKLIST
  517. // IN PIPSEC_FILTER_SPEC
  518. // IN PIPSEC_NFA_DATA
  519. //
  520. //Return:
  521. // S_OK or S_FALSE
  522. //
  523. //Author:
  524. // Madhurima Pawar (mpawar) 10/15/01
  525. //--
  526. {
  527. DWORD dwError = ERROR_SUCCESS;
  528. char *pmbbuf = NULL;
  529. PFILTERDNS pFilterDNS= NULL;
  530. //_TCHAR pszStrTruncated[BUFFER_SIZE]={0};
  531. NETDIAG_PARAMS* pParams = pcheckList->pParams;
  532. NETDIAG_RESULT* pResults = pcheckList->pResults;
  533. pFilterDNS = (PFILTERDNS)malloc(sizeof(FILTERDNS));
  534. if(!pFilterDNS){
  535. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose,
  536. IDS_SPD_MEM_ERROR );
  537. return S_FALSE;
  538. }
  539. GetFilterDNSDetails(pIpsecFilterSpec, pFilterDNS);
  540. if (pFilterDNS)
  541. {
  542. if ( _tcscmp((const char *)pIpsecFilterSpec->pszDescription,_TEXT(""))!=0){
  543. dwError = ConverWideToMultibyte( pIpsecFilterSpec->pszDescription,
  544. &pmbbuf);
  545. if(dwError){
  546. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  547. Nd_Verbose, IDS_SPD_MEM_ERROR,
  548. dwError);
  549. return S_FALSE ;
  550. }
  551. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  552. Nd_Verbose, SHW_STATIC_PRTPOLICY_4,
  553. pmbbuf);
  554. FreeP(pmbbuf);
  555. }
  556. else
  557. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  558. Nd_Verbose, SHW_STATIC_PRTPOLICY_5);
  559. if ((pFilterDNS->FilterSrcNameID==FILTER_MYADDRESS) &&
  560. (pIpsecFilterSpec->Filter.SrcAddr==0))
  561. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose,
  562. SHW_STATIC_PRTFILTER_1);
  563. else if ((pFilterDNS->FilterSrcNameID == FILTER_ANYADDRESS) &&
  564. (pIpsecFilterSpec->Filter.SrcAddr==0))
  565. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose,
  566. SHW_STATIC_PRTFILTER_2);
  567. else
  568. {
  569. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose,
  570. SHW_STATIC_PRTFILTER_3);
  571. if(_tcscmp((const char *)pIpsecFilterSpec->pszSrcDNSName,_TEXT("")) != 0)
  572. {
  573. PrintIPAddrDNS(pcheckList, pIpsecFilterSpec->Filter.SrcAddr);
  574. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose,
  575. SHW_STATIC_PRTFILTER_16,
  576. pIpsecFilterSpec->pszSrcDNSName);
  577. }
  578. else
  579. PrintIPAddrList(pcheckList, pIpsecFilterSpec->Filter.SrcAddr);
  580. }
  581. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFILTER_4);
  582. PrintIPAddrList(pcheckList, pIpsecFilterSpec->Filter.SrcMask);
  583. switch(pFilterDNS->FilterSrcNameID)
  584. {
  585. case FILTER_MYADDRESS :
  586. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFSPEC_1);
  587. break;
  588. case FILTER_DNSADDRESS:
  589. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFSPEC_15, pIpsecFilterSpec->pszSrcDNSName);
  590. PrintResolveDNS(pcheckList, pIpsecFilterSpec->pszSrcDNSName);
  591. break;
  592. case FILTER_ANYADDRESS:
  593. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFSPEC_3);
  594. break;
  595. case FILTER_IPADDRESS :
  596. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFSPEC_4);
  597. break;
  598. case FILTER_IPSUBNET :
  599. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFSPEC_5);
  600. break;
  601. default:
  602. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFSPEC_3);
  603. break;
  604. };
  605. if ((pFilterDNS->FilterDestNameID==FILTER_MYADDRESS)&&(pIpsecFilterSpec->Filter.DestAddr==0))
  606. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFILTER_5);
  607. else if ((pFilterDNS->FilterDestNameID==FILTER_ANYADDRESS)&&(pIpsecFilterSpec->Filter.DestAddr==0))
  608. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFILTER_6);
  609. else
  610. {
  611. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFILTER_7);
  612. if(_tcscmp((const char *)pIpsecFilterSpec->pszDestDNSName,_TEXT("")) != 0)
  613. {
  614. PrintIPAddrDNS(pcheckList, pIpsecFilterSpec->Filter.DestAddr);
  615. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose,
  616. SHW_STATIC_PRTFILTER_16,
  617. pIpsecFilterSpec->pszDestDNSName);
  618. }
  619. else
  620. PrintIPAddrList(pcheckList, pIpsecFilterSpec->Filter.DestAddr);
  621. }
  622. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose,
  623. SHW_STATIC_PRTFILTER_8);
  624. PrintIPAddrList(pcheckList, pIpsecFilterSpec->Filter.DestMask);
  625. switch(pFilterDNS->FilterDestNameID)
  626. {
  627. case FILTER_MYADDRESS :
  628. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFSPEC_7);
  629. break;
  630. case FILTER_DNSADDRESS:
  631. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFSPEC_16, pIpsecFilterSpec->pszDestDNSName);
  632. PrintResolveDNS(pcheckList,
  633. pIpsecFilterSpec->pszDestDNSName);
  634. break;
  635. case FILTER_ANYADDRESS:
  636. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFSPEC_9);
  637. break;
  638. case FILTER_IPADDRESS :
  639. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFSPEC_10);
  640. break;
  641. case FILTER_IPSUBNET :
  642. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFSPEC_11);
  643. break;
  644. default:
  645. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFSPEC_9);
  646. break;
  647. };
  648. //print tunnel endpoint
  649. if(pIpsecNFAData->dwTunnelFlags){
  650. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFILTER_13);
  651. PrintIPAddrList(pcheckList, pIpsecNFAData->dwTunnelIpAddr);
  652. }
  653. PrintProtocolNameList(pcheckList, pIpsecFilterSpec->Filter.Protocol);
  654. if(pIpsecFilterSpec->Filter.SrcPort)
  655. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFILTER_9,pIpsecFilterSpec->Filter.SrcPort);
  656. else
  657. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFILTER_10);
  658. if(pIpsecFilterSpec->Filter.DestPort)
  659. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFILTER_11,pIpsecFilterSpec->Filter.DestPort);
  660. else
  661. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFILTER_12);
  662. if(pIpsecFilterSpec->dwMirrorFlag)
  663. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  664. Nd_Verbose, SHW_STATIC_PRTFSPEC_13);
  665. else
  666. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  667. Nd_Verbose, SHW_STATIC_PRTFSPEC_14);
  668. if(pFilterDNS){
  669. free(pFilterDNS);
  670. pFilterDNS = NULL;
  671. }
  672. }
  673. return S_OK;
  674. }
  675. VOID GetFilterDNSDetails(
  676. IN PIPSEC_FILTER_SPEC pFilterData,
  677. IN OUT PFILTERDNS pFilterDNS)
  678. //++
  679. //Description:
  680. //Gets Filter DNS Details
  681. //
  682. //Arguments:
  683. // IN PIPSEC_FILTER_SPEC
  684. // IN/OUT PFILTERDNS
  685. //
  686. //Return:
  687. // None
  688. //
  689. //Author:
  690. // Madhurima Pawar (mpawar) 10/15/01
  691. //--
  692. {
  693. if ((pFilterData->Filter.SrcAddr == 0) &&
  694. (pFilterData->Filter.SrcMask == 0xffffffff) &&
  695. (_tcscmp((const char*)pFilterData->pszSrcDNSName,_TEXT("")) == 0))
  696. {
  697. pFilterDNS->FilterSrcNameID=FILTER_MYADDRESS;
  698. }
  699. else
  700. {
  701. if (_tcscmp((const char *)pFilterData->pszSrcDNSName,_TEXT("")) != 0)
  702. {
  703. pFilterDNS->FilterSrcNameID=FILTER_DNSADDRESS;
  704. }
  705. else if ((pFilterData->Filter.SrcAddr == 0) &&
  706. (pFilterData->Filter.SrcMask == 0))
  707. {
  708. pFilterDNS->FilterSrcNameID=FILTER_ANYADDRESS;
  709. }
  710. else if ((pFilterData->Filter.SrcAddr != 0) &&
  711. (pFilterData->Filter.SrcMask == 0xffffffff))
  712. {
  713. pFilterDNS->FilterSrcNameID=FILTER_IPADDRESS;
  714. }
  715. else if ((pFilterData->Filter.SrcAddr != 0) &&
  716. (pFilterData->Filter.SrcMask != 0))
  717. {
  718. pFilterDNS->FilterSrcNameID=FILTER_IPSUBNET;
  719. }
  720. else
  721. {
  722. pFilterDNS->FilterSrcNameID=FILTER_ANYADDRESS;
  723. }
  724. }
  725. if ((pFilterData->Filter.DestAddr == 0) &&
  726. (pFilterData->Filter.DestMask == 0) &&
  727. ((_tcscmp((const char*)pFilterData->pszDestDNSName,_TEXT("")) == 0) == 0))
  728. {
  729. pFilterDNS->FilterDestNameID= FILTER_ANYADDRESS;
  730. }
  731. else
  732. {
  733. if (_tcscmp((const char *)pFilterData->pszDestDNSName,_TEXT("")) != 0)
  734. {
  735. pFilterDNS->FilterDestNameID = FILTER_DNSADDRESS;
  736. }
  737. else if ((pFilterData->Filter.DestAddr == 0) && (pFilterData->Filter.DestMask == 0xffffffff))
  738. {
  739. pFilterDNS->FilterDestNameID = FILTER_MYADDRESS;
  740. }
  741. else if ((pFilterData->Filter.DestAddr != 0) && (pFilterData->Filter.DestMask == 0xffffffff))
  742. {
  743. pFilterDNS->FilterDestNameID = FILTER_IPADDRESS;
  744. }
  745. else if ((pFilterData->Filter.DestAddr != 0) && (pFilterData->Filter.DestMask != 0))
  746. {
  747. pFilterDNS->FilterDestNameID =FILTER_IPSUBNET;
  748. }
  749. else
  750. {
  751. pFilterDNS->FilterDestNameID = FILTER_ANYADDRESS;
  752. }
  753. }
  754. return;
  755. }
  756. VOID PrintProtocolNameList(
  757. CHECKLIST* pcheckList,
  758. DWORD dwProtocol)
  759. //++
  760. //Description:
  761. //Print Protocol Name List
  762. //
  763. //Arguments:
  764. // IN CHECKLIST
  765. // IN DWORD
  766. //
  767. //Return:
  768. // None
  769. //
  770. //Author:
  771. // Madhurima Pawar (mpawar) 10/15/01
  772. //--
  773. {
  774. NETDIAG_PARAMS* pParams = pcheckList->pParams;
  775. NETDIAG_RESULT* pResults = pcheckList->pResults;
  776. switch(dwProtocol)
  777. {
  778. case PROT_ID_ICMP :
  779. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTPROTOCOL_1);
  780. break;
  781. case PROT_ID_TCP :
  782. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTPROTOCOL_2);
  783. break;
  784. case PROT_ID_EGP :
  785. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTPROTOCOL_3);
  786. break;
  787. case PROT_ID_UDP :
  788. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTPROTOCOL_4);
  789. break;
  790. case PROT_ID_HMP :
  791. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTPROTOCOL_5);
  792. break;
  793. case PROT_ID_XNS_IDP:
  794. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTPROTOCOL_6);
  795. break;
  796. case PROT_ID_RDP :
  797. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTPROTOCOL_7);
  798. break;
  799. case PROT_ID_RVD :
  800. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTPROTOCOL_8);
  801. break;
  802. case PROT_ID_RAW :
  803. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTPROTOCOL_9);
  804. break;
  805. default:
  806. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTPROTOCOL_10);
  807. break;
  808. };
  809. }
  810. BOOL PrintISAKMPDataList(
  811. CHECKLIST* pcheckList,
  812. IN PIPSEC_ISAKMP_DATA pIpsecISAKMPData )
  813. //++
  814. //Description:
  815. //Print Protocol Name List
  816. //
  817. //Arguments:
  818. // IN CHECKLIST
  819. // IN PIPSEC_ISAKMP_DATA
  820. //
  821. //Return:
  822. // S_OK or S_FALSE
  823. //
  824. //Author:
  825. // Madhurima Pawar (mpawar) 10/15/01
  826. //--
  827. {
  828. DWORD dwLoop = 0;
  829. NETDIAG_PARAMS* pParams = pcheckList->pParams;
  830. NETDIAG_RESULT* pResults = pcheckList->pResults;
  831. if(pIpsecISAKMPData)
  832. {
  833. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTISAKMP_3);
  834. //AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTISAKMP_2);
  835. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTISAKMP_5);
  836. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTISAKMP_6);
  837. for ( dwLoop=0;dwLoop<pIpsecISAKMPData->dwNumISAKMPSecurityMethods;dwLoop++)
  838. if(pIpsecISAKMPData->pSecurityMethods)
  839. PrintISAKAMPSecurityMethodsList( pcheckList,
  840. pIpsecISAKMPData->pSecurityMethods[dwLoop]);
  841. }
  842. return S_OK;
  843. }
  844. VOID PrintISAKAMPSecurityMethodsList(
  845. CHECKLIST* pcheckList,
  846. IN CRYPTO_BUNDLE SecurityMethods)
  847. //++
  848. //Description:
  849. //Print ISAKMP Security Method List
  850. //
  851. //Arguments:
  852. // IN CHECKLIST
  853. // IN CRYPTO_BUNDLE
  854. //
  855. //Return:
  856. // none
  857. //
  858. //Author:
  859. // Madhurima Pawar (mpawar) 10/15/01
  860. //--
  861. {
  862. NETDIAG_PARAMS* pParams = pcheckList->pParams;
  863. NETDIAG_RESULT* pResults = pcheckList->pResults;
  864. if(SecurityMethods.EncryptionAlgorithm.AlgorithmIdentifier==CONF_ALGO_DES)
  865. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTISAKMPSEC_1);
  866. else
  867. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTISAKMPSEC_2);
  868. if(SecurityMethods.HashAlgorithm.AlgorithmIdentifier==AUTH_ALGO_SHA1)
  869. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTISAKMPSEC_3);
  870. else
  871. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTISAKMPSEC_4);
  872. if(SecurityMethods.OakleyGroup==DH_GROUP_1)
  873. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTISAKMPSEC_5);
  874. else if (SecurityMethods.OakleyGroup==DH_GROUP_2)
  875. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTISAKMPSEC_6);
  876. else
  877. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTISAKMPSEC_7);
  878. }
  879. VOID PrintIPAddrList(CHECKLIST * pcheckList,
  880. IN DWORD dwAddr)
  881. //++
  882. //Description:
  883. //Print IP Address List
  884. //
  885. //Arguments:
  886. // IN CHECKLIST
  887. // IN DWORD
  888. //
  889. //Return:
  890. // none
  891. //
  892. //Author:
  893. // Madhurima Pawar (mpawar) 10/15/01
  894. //--
  895. {
  896. NETDIAG_PARAMS* pParams = pcheckList->pParams;
  897. NETDIAG_RESULT* pResults = pcheckList->pResults;
  898. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTIP_1, (dwAddr & 0x000000FFL) );
  899. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTIP_1, ((dwAddr & 0x0000FF00L) >> 8) );
  900. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTIP_1, ((dwAddr & 0x00FF0000L) >> 16) );
  901. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTIP_2,((dwAddr & 0xFF000000L) >> 24) );
  902. }
  903. VOID PrintStorageInfoList(
  904. CHECKLIST* pcheckList,
  905. IN BOOL bDeleteAll)
  906. //++
  907. //Description:
  908. //Print Storage Info List
  909. //
  910. //Arguments:
  911. // IN CHECKLIST
  912. // IN BOOL
  913. //
  914. //Return:
  915. // none
  916. //
  917. //Author:
  918. // Madhurima Pawar (mpawar) 10/15/01
  919. //--
  920. {
  921. _TCHAR pszLocalMachineName[MAXSTRLEN] = {0};
  922. LPTSTR pszDomainName=NULL;
  923. DWORD MaxStringLen=MAXSTRLEN;
  924. PDOMAIN_CONTROLLER_INFO pDomainControllerInfo = NULL;
  925. DWORD Flags = DS_DIRECTORY_SERVICE_REQUIRED | DS_RETURN_DNS_NAME | DS_FORCE_REDISCOVERY;
  926. HRESULT hr = ERROR_SUCCESS;
  927. NETDIAG_PARAMS* pParams = pcheckList->pParams;
  928. NETDIAG_RESULT* pResults = pcheckList->pResults;
  929. if(piAssignedPolicy.iPolicySource==PS_LOC_POLICY)
  930. {
  931. GetComputerName(pszLocalMachineName,&MaxStringLen);
  932. if(!bDeleteAll)
  933. {
  934. if(_tcscmp((const char *)pszLocalMachineName,_TEXT(""))!=0)
  935. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  936. Nd_Verbose, SHW_STATIC_POLICY_7,
  937. pszLocalMachineName);
  938. else
  939. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  940. Nd_Verbose, SHW_STATIC_POLICY_10);
  941. }
  942. else
  943. {
  944. if(_tcscmp((const char *)pszLocalMachineName,_TEXT(""))!=0)
  945. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  946. Nd_Verbose, SHW_STATIC_POLICY_13,
  947. pszLocalMachineName);
  948. else
  949. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  950. Nd_Verbose, SHW_STATIC_POLICY_16);
  951. }
  952. }
  953. else if(piAssignedPolicy.iPolicySource==PS_DS_POLICY)
  954. {
  955. hr = DsGetDcName(NULL, //machine name
  956. NULL,
  957. NULL,
  958. NULL,
  959. Flags,
  960. &pDomainControllerInfo
  961. ) ;
  962. if(hr==NO_ERROR && pDomainControllerInfo && pDomainControllerInfo->DomainName)
  963. {
  964. pszDomainName =(LPTSTR) malloc(sizeof(LPSTR)*(
  965. _tcslen((const char *)pDomainControllerInfo->DomainName)+1));
  966. //pszDomainName= new _TCHAR[_tcslen(pDomainControllerInfo->DomainName)+1];
  967. if(!pszDomainName){
  968. //reportErr(IDS_SPD_MEM_ERROR);
  969. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  970. Nd_Verbose, IDS_SPD_MEM_ERROR);
  971. gErrorFlag = 1;
  972. goto error;
  973. }
  974. _tcscpy(pszDomainName,
  975. pDomainControllerInfo->DomainName);
  976. }
  977. if (pDomainControllerInfo)
  978. NetApiBufferFree(pDomainControllerInfo);
  979. if(!bDeleteAll)
  980. {
  981. if(pszDomainName)
  982. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_POLICY_9,pszDomainName);
  983. else
  984. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_POLICY_11);
  985. }
  986. else
  987. {
  988. if(pszDomainName)
  989. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_POLICY_15,pszDomainName);
  990. else
  991. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_POLICY_17);
  992. }
  993. if(pszDomainName) {
  994. free(pszDomainName);
  995. pszDomainName = NULL;
  996. }
  997. }
  998. error:
  999. return;
  1000. }
  1001. VOID PrintIPAddrDNS(CHECKLIST* pcheckList, IN DWORD dwaddr)
  1002. //++
  1003. //Description:
  1004. //Print IP Address DNS List
  1005. //
  1006. //Arguments:
  1007. // IN CHECKLIST
  1008. // IN DWORD
  1009. //
  1010. //Return:
  1011. // none
  1012. //
  1013. //Author:
  1014. // Madhurima Pawar (mpawar) 10/15/01
  1015. //--
  1016. {
  1017. NETDIAG_PARAMS* pParams = pcheckList->pParams;
  1018. NETDIAG_RESULT* pResults = pcheckList->pResults;
  1019. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTIP_1, (dwaddr & 0x000000FFL) );
  1020. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTIP_1, ((dwaddr & 0x0000FF00L) >> 8) );
  1021. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTIP_1, ((dwaddr & 0x00FF0000L) >> 16) );
  1022. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTIP_3,((dwaddr & 0xFF000000L) >> 24) );
  1023. }
  1024. VOID PrintResolveDNS(
  1025. CHECKLIST* pcheckList,
  1026. LPWSTR pszDNSName)
  1027. //++
  1028. //Description:
  1029. //Print DNS List
  1030. //
  1031. //Arguments:
  1032. // IN CHECKLIST
  1033. // IN LPWSTR
  1034. //
  1035. //Return:
  1036. // none
  1037. //
  1038. //Author:
  1039. // Madhurima Pawar (mpawar) 10/15/01
  1040. //--
  1041. {
  1042. DNSIPADDR *pAddress=NULL;
  1043. LPSTR pszDomainName=NULL;
  1044. struct hostent *pHostEnt = NULL;
  1045. char DNSName[MAX_STR_LEN] = {0};
  1046. DWORD dwLen = 0,i=0,n=0;
  1047. NETDIAG_PARAMS* pParams = pcheckList->pParams;
  1048. NETDIAG_RESULT* pResults = pcheckList->pResults;
  1049. if(pszDNSName && _tcscmp((const char *)pszDNSName,_TEXT(""))!=0)
  1050. {
  1051. pAddress=(DNSIPADDR*)malloc(sizeof(DNSIPADDR));
  1052. dwLen = _tcslen((const char *)pszDNSName);
  1053. for (i=0;i<dwLen;i++)
  1054. DNSName[i] = (char)(pszDNSName[i]); // upgrade to UNICODE compliance
  1055. DNSName[i]='\0';
  1056. pHostEnt = gethostbyname((const LPSTR)DNSName); // For Microsoft to take care !
  1057. if (pHostEnt)
  1058. {
  1059. for(i=0;pHostEnt->h_addr_list[i];i++);
  1060. pAddress->dwNumIpAddresses = i;
  1061. pAddress->puIpAddr =(PULONG)malloc(sizeof(ULONG)*pAddress->dwNumIpAddresses);
  1062. if(!pAddress){
  1063. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput,
  1064. Nd_Verbose, IDS_SPD_MEM_ERROR);
  1065. return;
  1066. }
  1067. for(n=0;n< i;n++)
  1068. {
  1069. memcpy(&(pAddress->puIpAddr[n]),(ULONG *)pHostEnt->h_addr_list[n], sizeof(ULONG));
  1070. PrintIPAddrDNS(pcheckList, pAddress->puIpAddr[n]);
  1071. if(n<(i-1))
  1072. _tprintf(_TEXT(" , "));
  1073. else
  1074. _tprintf(_TEXT("\n"));
  1075. }
  1076. }
  1077. else
  1078. {
  1079. AddMessageToList( &pResults->IPSec.lmsgGlobalOutput, Nd_Verbose, SHW_STATIC_PRTFILTER_17);
  1080. }
  1081. if(pAddress){
  1082. free(pAddress);
  1083. pAddress = NULL;
  1084. }
  1085. }
  1086. }