Re: Issues during assigning addresses on point to point interfaces
From: Nicolas Dichtel <hidden>
Date: 2021-06-24 12:57:50
Also in:
lkml
Le 24/06/2021 à 12:45, Marek Behún a écrit :
On Sun, 6 Jun 2021 17:10:08 +0200 Pali Rohár [off-list ref] wrote:quoted
Hello! Seems that there is a bug during assigning IP addresses on point to point interfaces. Assigning just one local address works fine: ip address add fe80::6 dev ppp1 --> inet6 fe80::6/128 scope link Assigning both local and remote peer address also works fine: ip address add fe80::7 peer fe80::8 dev ppp1 ---> inet6 fe80::7 peer fe80::8/128 scope link But trying to assign just remote peer address does not work. Moreover "ip address" call does not fail, it returns zero but instead of setting remote peer address, it sets local address: ip address add peer fe80::5 dev ppp1 --> inet6 fe80::5/128 scope linkAdding some other people to Cc in order to get their opinions. It seems this bug is there from the beginning, from commit caeaba79009c2 ("ipv6: add support of peer address") https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=caeaba79009c2 Maybe some older user-space utilities use IFA_ADDRESS instead of IFA_LOCAL, and this was done in order to be compatible with them?
If I remember well, there was an issue in the uAPI. IFA_LOCAL is supposed to be the address of the interface and IFA_ADDRESS is supposed to be the endpoint of a point-to-point interface. However, in case of IPv6, it was not the case. In netlink messages generated by the kernel, IFA_ADDRESS was used instead of IFA_LOCAL. The patch tried to keep the backward compatibility and the symmetry between msg from userland and notification from the kernel. Regards, Nicolas