For all $y$ such that $f(y) \ne y$, replace $(x,y) = (\frac{y}{y-f(y)},y)$ in the equation, we have that $f(y) = 0$. Indeed,
$$f(\frac{y}{y-f(y)}f(y)+y) = f(\frac{y}{y-f(y)}y)+f(y)$$
$$\iff f(\frac{y^2}{y-f(y)}) = f(\frac{y}{y-f(y)}y)+f(y)$$
$$\iff 0 = f(y)$$
So, we have for all $x$, $f(x) = 0$ or $f(x) =x$.
If $\exists y_0 \ne 0$ such that $f(y_0) = 0$
Then we have, for all $x$
$$f(xf(y_0)+y_0)=f(xy_0)+f(y_0)$$
$$\iff f(x.0+y_0)=f(xy_0)+0$$
$$\iff 0=f(xy_0)$$
Hence, for all $x\in \mathbb{R}$: $f(x)=0$
If $\not\exists y_0 \ne 0$ such that $f(y_0) = 0$
Then for all $x\ne0$, $f(x) \ne 0$. Because $f(x)$ can only receive value in $\{0,x \}$, then $f(x) = x$ for all $x$
Conclusion
There are 2 solutions: $f(x) = 0$ or $f(x) = x$.