Beginner error on my part : there are debug logs in networkd, I didn't even check them. As often, it turns out part of the answer lies in there. Here are the logs from 2.33: autopkgtest systemd-networkd[942]: test_eth42: Gained IPv6LL autopkgtest systemd-networkd[942]: test_eth42: link_check_ready(): DHCP4, DHCP6 or IPv4LL is enabled but no dynamic address is assigned yet. autopkgtest systemd-networkd[942]: test_eth42: Discovering IPv6 routers autopkgtest systemd-networkd[942]: NDISC: Started IPv6 Router Solicitation client autopkgtest systemd-networkd[942]: test_eth42: Remembering foreign route: dst: fe80::dcad:beff:feef:4711/128, src: n/a, gw: n/a, prefsrc: n/a, scope: global, table: local(255), proto: kernel, type: local, nexthop: 0 autopkgtest systemd-networkd[942]: NDISC: Sent Router Solicitation, next solicitation in 4s autopkgtest systemd-networkd[942]: rtnl: received non-static neighbor, ignoring. autopkgtest systemd-networkd[942]: NDISC: Received Router Advertisement: flags MANAGED preference medium lifetime 1800 sec autopkgtest systemd-networkd[942]: NDISC: Invoking callback for 'router' event. autopkgtest systemd-networkd[942]: DHCPv6 CLIENT: Started in Managed mode autopkgtest systemd-networkd[942]: test_eth42: Acquiring DHCPv6 lease on NDisc request autopkgtest systemd-networkd[942]: test_eth42: Configuring route: dst: n/a, src: n/a, gw: fe80::6051:85ff:fe70:4c03, prefsrc: n/a, scope: global, table: main(254), proto: ra, type: unicast, nexthop: 0 And the equivalent in 2.34: Aug 27 14:28:27 autopkgtest systemd-networkd[939]: test_eth42: Gained IPv6LL Aug 27 14:28:27 autopkgtest systemd-networkd[939]: test_eth42: link_check_ready(): DHCP4, DHCP6 or IPv4LL is enabled but no dynamic address is assigned yet. Aug 27 14:28:27 autopkgtest systemd-networkd[939]: test_eth42: Discovering IPv6 routers Aug 27 14:28:27 autopkgtest systemd-networkd[939]: NDISC: Started IPv6 Router Solicitation client Aug 27 14:28:27 autopkgtest systemd-networkd[939]: test_eth42: Remembering foreign route: dst: fe80::dcad:beff:feef:4711/128, src: n/a, gw: n/a, prefsrc: n/a, scope: global, table: local(255), proto: kernel, type: local, nexthop: 0 Aug 27 14:28:29 autopkgtest systemd-networkd[939]: NDISC: Sent Router Solicitation, next solicitation in 4s Aug 27 14:28:29 autopkgtest systemd-networkd[939]: rtnl: received non-static neighbor, ignoring. Aug 27 14:28:29 autopkgtest systemd-networkd[939]: NDISC: Unexpected error while reading from ICMPv6, ignoring: Exchange full Looking through the code, one can trace the EXFULL error to this function: https://github.com/systemd/systemd/blob/main/src/basic/socket-util.c#L1260 Which checks the msg flags and finds MSG_CTRUNC. The thing is, the recvmsg in strace looks like this: recvmsg(20, {msg_name={sa_family=AF_INET6, sin6_port=htons(0), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "fe80::6051:85ff:fe70:4c03", &sin6_addr), sin6_scope_id=if_nametoindex("test_eth42")}, msg_namelen=128->28, msg_iov=[{iov_base="\206\0000\276@\300\7\10\0\0\0\0\0\0\0\0\3\4@\200\377\377\377\377\377\377\377\377\0\0\0\0"..., iov_len=88}], msg_iovlen=1, msg_control=[{cmsg_len=20, cmsg_level=SOL_SOCKET, cmsg_type=SO_TIMESTAMP_OLD, cmsg_data={tv_sec=1630055833, tv_usec=877754}}, {cmsg_len=16, cmsg_level=SOL_IPV6, cmsg_type=0x34}], msg_controllen=36, msg_flags=0}, MSG_DONTWAIT) = 88 You'll note the msg_flags=0 at the end. So... What the hell?