I originally asked this question on the "Unix and Linux" StackExchange:
But i suspect it is a bit too niche and have not had a response there.
I have two pppd (v2.4.7) instances running, talking to each over over a
serial port link. But I can't work out how to get the 'client' pppd to
accept the link-local IPv6 interface identifier provided by the 'server'
pppd. I am trying to use static addresses so I know the link-local IP
address of the remote peer.
On the 'server' I am running:
pppd file ./ppp-options ipv6 ::1,::2 /dev/ttyAMA0 115200
And on the 'client', I am running:
pppd file ./ppp-options ipv6cp-accept-local /dev/ttyAMA0 115200
This is the contents of ppp-options on both:
The pppd man page says:
With this option, pppd will accept the peer's idea of our local
identifier, even if the local IPv6 interface identifier was
specified in an option.
But that doesn't seem to be the behaviour I am experiencing.
The client always just uses a locally chosen interface identifier
instead. It was suggested to me to try setting the 'client' local
interface identifier to all-zero but I have not found a way of doing
this through configuration. Or alternatively get the 'server' to Nack
the clients choice of interface identifier - but I'm not sure how to
achieve that with pppd.
I have now managed to get it working by hacking ipv6cp.c to keep the
local identifier as all-zero, by disabling a couple of calls to
eui64_magic_nz. But I am not sure what the proper solution is.
Does there need to be an IPv6 equivalent to 'noipdefault' to use in
conjunction with 'ipv6cp-accept-local'?