Interface stats and link state for Mac OSX
This commit is contained in:
parent
c51e28b203
commit
0d253cdb09
@ -35,6 +35,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
|||||||
#include <net/if_dl.h>
|
#include <net/if_dl.h>
|
||||||
#include <net/route.h>
|
#include <net/route.h>
|
||||||
|
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
#define ifr_flagshigh ifr_flags
|
||||||
|
#define IFF_PPROMISC (IFF_PROMISC << 16)
|
||||||
|
#endif
|
||||||
|
|
||||||
QList<BsdPort*> BsdPort::allPorts_;
|
QList<BsdPort*> BsdPort::allPorts_;
|
||||||
BsdPort::StatsMonitor *BsdPort::monitor_;
|
BsdPort::StatsMonitor *BsdPort::monitor_;
|
||||||
|
|
||||||
@ -154,7 +159,7 @@ void BsdPort::StatsMonitor::run()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug("sysctl mib returns reqd len = %d\n", len);
|
qDebug("sysctl mib returns reqd len = %d\n", (int) len);
|
||||||
len *= 2; // for extra room, just in case!
|
len *= 2; // for extra room, just in case!
|
||||||
buf.fill('\0', len);
|
buf.fill('\0', len);
|
||||||
if (sysctl(mib, mibLen, buf.data(), &len, NULL, 0) < 0)
|
if (sysctl(mib, mibLen, buf.data(), &len, NULL, 0) < 0)
|
||||||
@ -275,7 +280,12 @@ void BsdPort::StatsMonitor::run()
|
|||||||
OstProto::LinkState *state = linkState[ifm->ifm_index];
|
OstProto::LinkState *state = linkState[ifm->ifm_index];
|
||||||
|
|
||||||
Q_ASSERT(state);
|
Q_ASSERT(state);
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
*state = ifm->ifm_flags & IFF_RUNNING ?
|
||||||
|
OstProto::LinkStateUp : OstProto::LinkStateDown;
|
||||||
|
#else
|
||||||
*state = (OstProto::LinkState) ifd->ifi_link_state;
|
*state = (OstProto::LinkState) ifd->ifi_link_state;
|
||||||
|
#endif
|
||||||
|
|
||||||
stats->rxPps = (ifd->ifi_ipackets + ifd->ifi_noproto
|
stats->rxPps = (ifd->ifi_ipackets + ifd->ifi_noproto
|
||||||
- stats->rxPkts) /kRefreshFreq_;
|
- stats->rxPkts) /kRefreshFreq_;
|
||||||
|
Loading…
Reference in New Issue
Block a user