/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 1999 **/ /**********************************************************************/ /* ipstats.cpp IP Statistics implementation. FILE HISTORY: */ #include "stdafx.h" #include "rtrutil.h" // smart MPR handle pointers #include "format.h" // FormatNumber function #include "column.h" // containercolumninfo #include "ipxconn.h" // IPXConnection #include "routprot.h" #include "ipxutil.h" #include "statsdlg.h" #include "ripstats.h" #include "resource.h" /*--------------------------------------------------------------------------- RIPParamsStatistics implementation ---------------------------------------------------------------------------*/ extern const ContainerColumnInfo s_rgRIPParamsStatsColumnInfo[]; const ContainerColumnInfo s_rgRIPParamsStatsColumnInfo[] = { { IDS_STATS_RIPPARAMS_OPER_STATE, 0, TRUE, COL_STATUS }, { IDS_STATS_RIPPARAMS_SENT_PACKETS, 0, TRUE, COL_LARGE_NUM }, { IDS_STATS_RIPPARAMS_RCVD_PACKETS, 0, TRUE, COL_LARGE_NUM }, }; RIPParamsStatistics::RIPParamsStatistics() : IPXStatisticsDialog(STATSDLG_VERTICAL | STATSDLG_FULLWINDOW | STATSDLG_CONTEXTMENU | STATSDLG_SELECT_COLUMNS) { SetColumnInfo(s_rgRIPParamsStatsColumnInfo, DimensionOf(s_rgRIPParamsStatsColumnInfo)); } HRESULT RIPParamsStatistics::RefreshData(BOOL fGrabNewData) { HRESULT hr = hrOK; CString st; ULONG iPos; TCHAR szNumber[32]; RIP_MIB_GET_INPUT_DATA MibGetInputData; PRIPMIB_BASE pRipBase = NULL; DWORD cbRipBase; SPMprMibBuffer spMib; PRIP_INTERFACE pRipIf = NULL; DWORD cbRipIf; DWORD cSent = 0; DWORD cRcvd = 0; DWORD dwErr; Assert(m_pIPXConn); MibGetInputData.TableId = RIP_BASE_ENTRY; dwErr = ::MprAdminMIBEntryGet(m_pIPXConn->GetMibHandle(), PID_IPX, IPX_PROTOCOL_RIP, &MibGetInputData, sizeof(MibGetInputData), (LPVOID *) &pRipBase, &cbRipBase); spMib = (LPBYTE) pRipBase; hr = HRESULT_FROM_WIN32(dwErr); CORg( hr ); if (IsSubitemVisible(MVR_RIPPARAMS_OPER_STATE)) { st = IpxOperStateToCString(pRipBase->RIPOperState); iPos = MapSubitemToColumn(MVR_RIPPARAMS_OPER_STATE); m_listCtrl.SetItemText(iPos, 1, (LPCTSTR) st); } spMib.Free(); MibGetInputData.TableId = RIP_INTERFACE_TABLE; dwErr = MprAdminMIBEntryGetFirst(m_pIPXConn->GetMibHandle(), PID_IPX, IPX_PROTOCOL_RIP, &MibGetInputData, sizeof(MibGetInputData), (LPVOID *) &pRipIf, &cbRipIf); hr = HRESULT_FROM_WIN32(dwErr); spMib = (LPBYTE) pRipIf; while (FHrSucceeded(hr)) { if (pRipIf->InterfaceIndex) { cSent += pRipIf->RipIfStats.RipIfOutputPackets; cRcvd += pRipIf->RipIfStats.RipIfInputPackets; } MibGetInputData.InterfaceIndex = pRipIf->InterfaceIndex; spMib.Free(); pRipIf = NULL; dwErr = MprAdminMIBEntryGetNext(m_pIPXConn->GetMibHandle(), PID_IPX, IPX_PROTOCOL_RIP, &MibGetInputData, sizeof(MibGetInputData), (LPVOID *) &pRipIf, &cbRipIf); hr = HRESULT_FROM_WIN32(dwErr); spMib = (LPBYTE) pRipIf; } if (IsSubitemVisible(MVR_RIPPARAMS_SENT_PKTS)) { FormatNumber(cSent, szNumber, DimensionOf(szNumber), FALSE); iPos = MapSubitemToColumn(MVR_RIPPARAMS_SENT_PKTS); m_listCtrl.SetItemText(iPos, 1, (LPCTSTR) szNumber); } if (IsSubitemVisible(MVR_RIPPARAMS_RCVD_PKTS)) { FormatNumber(cRcvd, szNumber, DimensionOf(szNumber), FALSE); iPos = MapSubitemToColumn(MVR_RIPPARAMS_RCVD_PKTS); m_listCtrl.SetItemText(iPos, 1, (LPCTSTR) szNumber); } Error: return hr; } BOOL RIPParamsStatistics::OnInitDialog() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CString st; st.LoadString(IDS_STATS_RIPPARAMS_TITLE); SetWindowText((LPCTSTR) st); return IPXStatisticsDialog::OnInitDialog(); } void RIPParamsStatistics::Sort(UINT) { }