net: if: Join solicited-node multicast addr for each unicast addr
net: if: Join solicited-node multicast addr for each unicast addr

https://tools.ietf.org/html/rfc4862#section-5.4.2 :

"""
Before sending a Neighbor Solicitation, an interface MUST join the
all-nodes multicast address and the solicited-node multicast address
of the tentative address.
"""

So, joining should happen before sending DAD packets, and it should
happen for each unicast address added. This is achieved by joining
from net_if_ipv6_addr_add() call. Note that we already leave
solicited-node group from net_if_ipv6_addr_rm(). In particular, we
leave it if DAD fails (as that function is called in this case).

Fixes #5282.

Signed-off-by: Paul Sokolovsky <35cb557f011771c94f127d6fef99f804b62203f5@linaro.org>

galak/zephyr,finikorg/zephyr,punitvara/zephyr,zephyrproject-rtos/zephyr,ldts/zephyr,punitvara/zephyr,zephyriot/zephyr,zephyriot/zephyr,nashif/zephyr,GiulianoFranchetto/zephyr,GiulianoFranchetto/zephyr,ldts/zephyr,galak/zephyr,explora26/zephyr,aceofall/zephyr-iotos,zephyrproject-rtos/zephyr,finikorg/zephyr,Vudentz/zephyr,aceofall/zephyr-iotos,Vudentz/zephyr,GiulianoFranchetto/zephyr,zephyrproject-rtos/zephyr,aceofall/zephyr-iotos,kraj/zephyr,galak/zephyr,nashif/zephyr,mbolivar/zephyr,punitvara/zephyr,explora26/zephyr,explora26/zephyr,punitvara/zephyr,mbolivar/zephyr,kraj/zephyr,kraj/zephyr,aceofall/zephyr-iotos,ldts/zephyr,zephyrproject-rtos/zephyr,explora26/zephyr,kraj/zephyr,mbolivar/zephyr,GiulianoFranchetto/zephyr,galak/zephyr,ldts/zephyr,Vudentz/zephyr,kraj/zephyr,ldts/zephyr,mbolivar/zephyr,galak/zephyr,zephyriot/zephyr,finikorg/zephyr,Vudentz/zephyr,Vudentz/zephyr,nashif/zephyr,zephyrproject-rtos/zephyr,nashif/zephyr,zephyriot/zephyr,GiulianoFranchetto/zephyr,punitvara/zephyr,finikorg/zephyr,finikorg/zephyr,explora26/zephyr,mbolivar/zephyr,Vudentz/zephyr,zephyriot/zephyr,aceofall/zephyr-iotos,nashif/zephyr