Substituting x=0 gives (y+1)f(0)+f(f(y))=y, so f(f(y))=y⋅(1−f(0))−f(0). If f(0)=1, the right-hand side is a bijective function in y and the left-hand side is also bijective. Thus, in this case, f is bijective.
We will now show that in the case f(0)=1, f is also bijective. So let f(0)=1. Then we get f(f(y))=−1 for all y∈R. Substituting y=0 gives f(x)+f(x+f(x))=0, so f(x+f(x))=−f(x). Next, substitute x=f(z) and y=z and replace f(f(z)) with -1:
(z+1)⋅−1+f(f(z)f(z)+f(z+f(z)))=z
so, using that f(z+f(z))=−f(z),
f(f(z)2−f(z))=2z+1
This directly implies that f is surjective. If there are a and b such that f(a)=f(b), then substituting z=a and then z=b into the last equation gives the same result on the left, while on the right it first gives 2a+1 and then 2b+1. Thus, a=b, which means f is injective. We see that f is also bijective in this case.
We can now assume that f is bijective, dropping the assumption f(0)=1. We know f(f(y))=y⋅(1−f(0))−f(0) and thus find with y=−1 that f(f(−1))=−1. Substituting y=−1 into the original equation gives
f(xf(−1)+f(x−1))=−1=f(f(−1))
Since f is injective, it follows that xf(−1)+f(x−1)=f(−1), so f(x−1)=f(−1)⋅(1−x). If we now take x=z+1, we see that f(z)=−f(−1)z for all z∈R. Thus, the function is of the form f(x)=cx for x∈R, where c∈R is a constant. We check this function. It holds that
(y+1)f(x)+f(xf(y)+f(x+y))=(y+1)cx+c(xcy+cx+cy)=cxy+cx+c2xy+c2x+c2y.
This must be equal to y for all x,y∈R. With y=0 and x=1, we have c+c2=0, so c=0 or c=−1. With x=0 and y=1, we have c2=1, so c=1 or c=−1. We conclude that c=−1 and then we see that this function indeed satisfies the equation. Thus, the only solution is f(x)=−x for x∈R.