Subject: IPv6 Destination Options question

From: Christoph Grenz <[email-masked]>
Date: Sat, 14 Dec 2019 17:11:15 +0100

Hello,

I'm playing around with Mobile IPv6 and noticed a strange behaviour in the 
Linux network system when using IPv6 destination options:

I'm able to send destination options on SOCK_DGRAM and SOCK_RAW sockets with
sendmsg() and IPV6_DSTOPTS ancillary data. The sent packets also look correct 
in Wireshark.

But I'm not able to receive packets with destination options on a socket with 
the IPV6_RECVDSTOPTS socket option enabled. Both a packet with a Home Address 
Option and a packet with an empty destination options header (only containing 
padding) won't be received on a socket for the payload protocol.

Only a SOCK_RAW socket for IPPROTO_DSTOPTS receives the packet.

I tested this on a vanilla 5.4.0 kernel and got the same behaviour. Activating 
dyndbg for everything in net/ipv6 didn't produce any relevant output in dmesg.

Is this expected behaviour or a bug? Or do I maybe need some other socket 
option or a xfrm policy to receive packets with destination options?

Best regards
Christoph