add: (void)len;
context: status_t hook_ioctl(void *_data, uint32 msg, void *buf, size_t len){	viarhine_private *device = (viarhine_private*)_data;	switch (msg)	{	case ETHER_GETADDR:		if (_data == NULL)			return B_ERROR;		memcpy(buf, &device->macaddr, 6);#ifdef __VIARHINE_DEBUG__		debug_printf("hook_control: getaddr\n");#endif		return B_NO_ERROR;	case ETHER_INIT:#ifdef __VIARHINE_DEBUG__		debug_printf("hook_control: init\n");#endif		return B_NO_ERROR;	case ETHER_GETFRAMESIZE:#ifdef __VIARHINE_DEBUG__		debug_printf("hook_control: getframesize (%u)\n", MAX_FRAME_SIZE);#endif		*(uint32*)buf = MAX_FRAME_SIZE;		return B_NO_ERROR;	case ETHER_SETPROMISC:#ifdef __VIARHINE_DEBUG__		debug_printf("hook_control: setpromiscuous\n");#endif		break;	case ETHER_NONBLOCK:#ifdef __VIARHINE_DEBUG__		debug_printf("hook_control: nonblock\n");#endif		if (device == NULL)			return B_ERROR;		memcpy(&device->nonblocking, buf, sizeof(device->nonblocking));		return B_NO_ERROR;	case ETHER_ADDMULTI:#ifdef __VIARHINE_DEBUG__		debug_printf("hook_control: add multicast\n");#endif		break;	default:#ifdef __VIARHINE_DEBUG__		debug_printf("hook_control: unknown msg %x\n", msg);#endif		break;	}		return B_ERROR;}