diff --git a/server/bsdport.cpp b/server/bsdport.cpp index 016e93e..2382bcb 100644 --- a/server/bsdport.cpp +++ b/server/bsdport.cpp @@ -35,6 +35,11 @@ along with this program. If not, see #include #include +#ifdef Q_OS_MAC +#define ifr_flagshigh ifr_flags +#define IFF_PPROMISC (IFF_PROMISC << 16) +#endif + QList BsdPort::allPorts_; BsdPort::StatsMonitor *BsdPort::monitor_; @@ -154,7 +159,7 @@ void BsdPort::StatsMonitor::run() 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! buf.fill('\0', len); 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]; 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; +#endif stats->rxPps = (ifd->ifi_ipackets + ifd->ifi_noproto - stats->rxPkts) /kRefreshFreq_;