// Get the information UINT NtGetInfo(NAT *n, RPC_NAT_INFO *t) { OS_INFO *info; FreeRpcNatInfo(t); Zero(t, sizeof(RPC_NAT_INFO)); StrCpy(t->NatProductName, sizeof(t->NatProductName), CEDAR_ROUTER_STR); StrCpy(t->NatVersionString, sizeof(t->NatVersionString), n->Cedar->VerString); StrCpy(t->NatBuildInfoString, sizeof(t->NatBuildInfoString), n->Cedar->BuildInfo); t->NatVerInt = n->Cedar->Build; t->NatBuildInt = n->Cedar->Build; GetMachineName(t->NatHostName, sizeof(t->NatHostName)); info = GetOsInfo(); CopyOsInfo(&t->OsInfo, info); GetMemInfo(&t->MemInfo); return ERR_NO_ERROR; }
// Show the information of the router bool NmInfo(HWND hWnd, SM_SERVER *s, void *param) { LVB *b; RPC_NAT_INFO t; wchar_t tmp[MAX_SIZE]; // Validate arguments if (hWnd == NULL || s == NULL) { return false; } Zero(&t, sizeof(t)); if (CALL(hWnd, NcGetInfo(s->Rpc, &t)) == false) { return false; } b = LvInsertStart(); StrToUni(tmp, sizeof(tmp), t.NatProductName); LvInsertAdd(b, ICO_ROUTER, NULL, 2, _UU("NM_INFO_PRODUCT_NAME"), tmp); StrToUni(tmp, sizeof(tmp), t.NatVersionString); LvInsertAdd(b, ICO_INFORMATION, NULL, 2, _UU("NM_INFO_VERSION_STR"), tmp); StrToUni(tmp, sizeof(tmp), t.NatBuildInfoString); LvInsertAdd(b, ICO_INFORMATION, NULL, 2, _UU("NM_INFO_BUILD_INFO"), tmp); StrToUni(tmp, sizeof(tmp), t.NatHostName); LvInsertAdd(b, ICO_TOWER, NULL, 2, _UU("NM_INFO_HOSTNAME"), tmp); // OS StrToUni(tmp, sizeof(tmp), t.OsInfo.OsSystemName); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_SYSTEM_NAME"), tmp); StrToUni(tmp, sizeof(tmp), t.OsInfo.OsProductName); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_PRODUCT_NAME"), tmp); if (t.OsInfo.OsServicePack != 0) { UniFormat(tmp, sizeof(tmp), _UU("SM_OS_SP_TAG"), t.OsInfo.OsServicePack); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_SERVICE_PACK"), tmp); } StrToUni(tmp, sizeof(tmp), t.OsInfo.OsVendorName); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_VENDER_NAME"), tmp); StrToUni(tmp, sizeof(tmp), t.OsInfo.OsVersion); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_VERSION"), tmp); StrToUni(tmp, sizeof(tmp), t.OsInfo.KernelName); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_KERNEL_NAME"), tmp); StrToUni(tmp, sizeof(tmp), t.OsInfo.KernelVersion); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_KERNEL_VERSION"), tmp); // Memory information if (t.MemInfo.TotalMemory != 0) { char vv[128]; ToStr3(vv, sizeof(vv), t.MemInfo.TotalMemory); UniFormat(tmp, sizeof(tmp), _UU("SM_ST_RAM_SIZE_KB"), vv); LvInsertAdd(b, ICO_MEMORY, NULL, 2, _UU("SM_ST_TOTAL_MEMORY"), tmp); ToStr3(vv, sizeof(vv), t.MemInfo.UsedMemory); UniFormat(tmp, sizeof(tmp), _UU("SM_ST_RAM_SIZE_KB"), vv); LvInsertAdd(b, ICO_MEMORY, NULL, 2, _UU("SM_ST_USED_MEMORY"), tmp); ToStr3(vv, sizeof(vv), t.MemInfo.FreeMemory); UniFormat(tmp, sizeof(tmp), _UU("SM_ST_RAM_SIZE_KB"), vv); LvInsertAdd(b, ICO_MEMORY, NULL, 2, _UU("SM_ST_FREE_MEMORY"), tmp); ToStr3(vv, sizeof(vv), t.MemInfo.TotalPhys); UniFormat(tmp, sizeof(tmp), _UU("SM_ST_RAM_SIZE_KB"), vv); LvInsertAdd(b, ICO_MEMORY, NULL, 2, _UU("SM_ST_TOTAL_PHYS"), tmp); ToStr3(vv, sizeof(vv), t.MemInfo.UsedPhys); UniFormat(tmp, sizeof(tmp), _UU("SM_ST_RAM_SIZE_KB"), vv); LvInsertAdd(b, ICO_MEMORY, NULL, 2, _UU("SM_ST_USED_PHYS"), tmp); ToStr3(vv, sizeof(vv), t.MemInfo.FreePhys); UniFormat(tmp, sizeof(tmp), _UU("SM_ST_RAM_SIZE_KB"), vv); LvInsertAdd(b, ICO_MEMORY, NULL, 2, _UU("SM_ST_FREE_PHYS"), tmp); } LvInsertEnd(b, hWnd, L_STATUS); FreeRpcNatInfo(&t); return true; }