Help wanted with IPv6 support.
Current there are some failures with IPv6 support. It is not easy to solve, so if anyone wants to help it's a nice challenge.
Firstly, it's not clear to me how multicast works with IPv6, so test_multicast() fails. There are a couple of TODO notes in the source regarding this. Specifically,
setsockopt(s->sockets[0].fd, IPPROTO_IP, IPV6_MULTICAST_IF,
&s->addr_if.a.addr6, s->addr_if.size
appears to return an error on Linux.
However, if you compile with --enable-ipv6 and comment-out test_multicast(), there are still some errors in basic liblo functionality when communicating with the subtest subprocess.
subtest: creating new address `osc.udp://bicycle15:17776/'
<-- subtest_handler()
subtest: got reply (/subtest)
<-- subtest_reply_handler()
<-- subtest_reply_handler()
<-- subtest_reply_handler()
<-- subtest_reply_handler()
<-- subtest_reply_handler()
<-- subtest_reply_handler()
<-- subtest_reply_handler()
<-- subtest_reply_handler()
<-- subtest_reply_handler()
<-- subtest_reply_handler()
<-- subtest_reply_handler()
FAILED reply_count == 3 at testlo.c:1441
test run not completed
liblo test FAILED
I was originally going to open a separate issue to note about the README that Pure Data vanilla versions 0.51 and greater support IPv6, but I think it might be more helpful to share our networking helper functions for handling ailists and multicast settings: s_net.h and s_net.c. It was definitely a slog to add proper IPv6 handling, so I hope this is useful to liblo which I personally use in many projects.
Thank you @danomatika ! I will look at those when I get a chance to work on this again, much appreciated.