rem: if(current->if_type == IFT_ETHER && current->name) { if(position + strlen(current->name) + 1 > length)
add: if(current->if_type == IFT_ETHER && current->if_name) { if(position + strlen(current->if_name) + 1 > length)
context: control(uint32 op, void *data, size_t length){	switch(op) {		case PPPoE_GET_INTERFACES: {			int32 position = 0, count = 0;			char *names = (char*) data;						ifnet *current = get_interfaces();			for(; current; current = current->if_next) {				if(current->if_type == IFT_ETHER && current->name) {					if(position + strlen(current->name) + 1 > length)						return B_NO_MEMORY;										strcpy(names + position, current->name);					position += strlen(current->name) + 1;					++count;				}			}						return count;		}				case PPPoE_QUERY_SERVICES: {			// XXX: as all modules are loaded on-demand we must wait for the results						if(!data || length != sizeof(pppoe_query_request))				return B_ERROR;						pppoe_query_request *request = (pppoe_query_request*) data;						pppoe_query query;			query.ethernetIfnet = FindPPPoEInterface(request->interfaceName);			if(!query.ethernetIfnet)				return B_BAD_VALUE;						query.hostUniq = NewHostUniq();			query.receiver = request->receiver;						sLock.Lock();			sQueries->AddItem(&query);			sLock.Unlock();						snooze(2000000);				// wait two seconds for results						sLock.Lock();			sQueries->RemoveItem(&query);			sLock.Unlock();		} break;				default:			return B_ERROR;	}		return B_OK;}