bool CLASS::configureInterface( IONetworkInterface * netif ) { IONetworkData * data; if (super::configureInterface(netif) == false) return false; // Get the generic network statistics structure data = netif->getParameter(kIONetworkStatsKey); if (!data || !(fNetStats = (IONetworkStats *) data->getBuffer())) { ERROR_LOG("%s: no network statistics\n", getName()); return false; } bzero(fNetStats, sizeof(*fNetStats)); // Get the Ethernet statistics structure data = netif->getParameter(kIOEthernetStatsKey); if (!data || !(fEtherStats = (IOEthernetStats *) data->getBuffer())) { ERROR_LOG("%s: no Ethernet statistics\n", getName()); return false; } return true; }
bool RTL8139::configureInterface( IONetworkInterface *netif ) { IONetworkData *data; ELG( this, netif, 'cfgI', "RTL8139::configureInterface " ); DEBUG_LOG( "configureInterface() ===>\n" ); if ( false == super::configureInterface( netif ) ) return false; // Get the generic network statistics structure: data = netif->getParameter( kIONetworkStatsKey ); if ( !data || !(netStats = (IONetworkStats*)data->getBuffer()) ) return false; // Get the Ethernet statistics structure: data = netif->getParameter( kIOEthernetStatsKey ); if ( !data || !(etherStats = (IOEthernetStats*)data->getBuffer()) ) return false; DEBUG_LOG( "configureInterface() <===\n" ); return true; }/* end configureInterface */
bool HoRNDIS::configureInterface(IONetworkInterface *netif) { IONetworkData *nd; if (super::configureInterface(netif) == false) { LOG(V_ERROR, "super failed"); return false; } nd = netif->getNetworkData(kIONetworkStatsKey); if (!nd || !(fpNetStats = (IONetworkStats *)nd->getBuffer())) { LOG(V_ERROR, "network statistics buffer unavailable?"); return false; } return true; }
bool darwin_iwi3945::configureInterface(IONetworkInterface * netif) { IONetworkData * data; IWI_DEBUG("configureInterface\n"); if (super::configureInterface(netif) == false) return false; // Get the generic network statistics structure. data = netif->getParameter(kIONetworkStatsKey); if (!data || !(netStats = (IONetworkStats *)data->getBuffer())) { return false; } // Get the Ethernet statistics structure. data = netif->getParameter(kIOEthernetStatsKey); if (!data || !(etherStats = (IOEthernetStats *)data->getBuffer())) { return false; } return true; }
bool AgereET131x::configureInterface(IONetworkInterface * interface) { IONetworkData * data = NULL; if (super::configureInterface(interface) == false) { return false; } // Get the generic network statistics structure. data = interface->getParameter(kIONetworkStatsKey); if (!data || !(netStats = (IONetworkStats *) data->getBuffer())) { return false; } // Get the Ethernet statistics structure. data = interface->getParameter(kIOEthernetStatsKey); if (!data || !(etherStats = (IOEthernetStats *) data->getBuffer())) { return false; } return true; }
bool AttansicL2Ethernet::configureInterface(IONetworkInterface *netif) { DbgPrint("configureInterface()\n"); IONetworkData *data; if (!BASE::configureInterface(netif)) return false; //Get the generic network statistics structure. data = netif->getParameter(kIONetworkStatsKey); if (!data || !(netStats_ = (IONetworkStats *)data->getBuffer())) { return false; } //Get the Ethernet statistics structure. data = netif->getParameter(kIOEthernetStatsKey); if (!data || !(etherStats_ = (IOEthernetStats *)data->getBuffer())) { return false; } return true; }
bool IOEthernetInterface::init(IONetworkController * controller) { OSObject * obj; _reserved = IONew( ExpansionData, 1 ); if( _reserved == 0 ) return false; memset(_reserved, 0, sizeof(ExpansionData)); if ( super::init(controller) == false ) return false; // initialize enet specific fields. setInterfaceType(IFT_ETHER); setMaxTransferUnit( ETHERMTU ); setMediaAddressLength( ETHER_ADDR_LEN ); setMediaHeaderLength( ETHER_HDR_LEN ); setFlags( IFF_BROADCAST | IFF_SIMPLEX | IFF_NOTRAILERS, IFF_RUNNING | IFF_MULTICAST ); // Add an IONetworkData with room to hold an IOEthernetStats structure. // This class does not reference the data object created, and no harm // is done if the data object is released or replaced. IONetworkData * data = IONetworkData::withInternalBuffer( kIOEthernetStatsKey, sizeof(IOEthernetStats)); if (data) { addNetworkData(data); data->release(); } _inputEventThreadCall = thread_call_allocate( handleEthernetInputEvent, this ); if (!_inputEventThreadCall) return false; // Create and initialize the filter dictionaries. _requiredFilters = OSDictionary::withCapacity(2); _activeFilters = OSDictionary::withCapacity(2); if ( (_requiredFilters == 0) || (_activeFilters == 0) ) return false; obj = controller->copyProperty(kIOPacketFilters); if (obj && ((_supportedFilters = OSDynamicCast(OSDictionary, obj)) == 0)) obj->release(); if (!_supportedFilters) return false; // Cache the bit mask of wake filters supported by the driver. // This value will not change. _supportedWakeFilters = GET_SUPPORTED_FILTERS( gIOEthernetWakeOnLANFilterGroup ); // Retain the Disabled WOL filters OSNumber. // Its value will be updated live for link and WOL changed events. obj = _supportedFilters->getObject( gIOEthernetDisabledWakeOnLANFilterGroup ); _disabledWakeFilters = OSDynamicCast(OSNumber, obj); if (_disabledWakeFilters) _disabledWakeFilters->retain(); // Controller's Unicast (directed) and Broadcast filters should always // be enabled. Those bits should never be cleared. if ( !SET_REQUIRED_FILTERS( gIONetworkFilterGroup, kIOPacketFilterUnicast | kIOPacketFilterBroadcast ) || !SET_REQUIRED_FILTERS( gIOEthernetWakeOnLANFilterGroup, 0 ) || !SET_ACTIVE_FILTERS( gIONetworkFilterGroup, 0 ) || !SET_ACTIVE_FILTERS( gIOEthernetWakeOnLANFilterGroup, 0 ) ) { return false; } _publishedFeatureID = 0; // Publish filter dictionaries to property table. setProperty( kIORequiredPacketFilters, _requiredFilters ); setProperty( kIOActivePacketFilters, _activeFilters ); return true; }