Exactly the problem is in the udpfromto_init() call
inside the listen_bind() function.
Inside this function the return value is set to
be:
return setsockopt(s, proto, flag, &opt,
sizeof(opt));
with the ipv6 address, it returns -1 (and after a
couple of calls and error logs, the program exits)
with the ipv4 address it returns the correct 0
value.