So while playing around with mDNS implementations on Linux, and trying to get a handle on how some of the socket options - SO_REUSEADDR , IPV6_ADD_MEMBERSHIP , IPV6_MULTICAST_LOOP worked with UDP over IPV6, I created a simple chart for my reference. These options are invoked using the setsockopt() call.
SO_REUSEADDR is usually used in case of TCP - when you want to reopen a socket on the port which was just closed and is currently in TIME_WAIT state. Read more here.
IPV6_ADD_MEMBERSHIP & IPV6_MULTICAST_LOOP are used when you want to create multicast groups - for example in case of mDNS you want to receive all packets destined to FF02::FB. The Windows implementation (described here) of these two option is the same as Linux.
PDF of above chart is here