The following socket options are supported.
.TP
.BR IPV6_ADDRFORM (2const)
-.TP
-.B IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP
-Control membership in multicast groups.
-Argument is a pointer to a
-.IR "struct ipv6_mreq" .
+.TQ
+.BR IPV6_ADD_MEMBERSHIP (2const)
+.TQ
+.BR IPV6_DROP_MEMBERSHIP (2const)
.TP
.B IPV6_MTU
.BR getsockopt ():
--- /dev/null
+.\" Copyright, the authors of the Linux man-pages project
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH IPV6_ADD_MEMBERSHIP 2const (date) "Linux man-pages (unreleased)"
+.SH NAME
+IPV6_ADD_MEMBERSHIP,
+IPV6_DROP_MEMBERSHIP
+\-
+join or leave a multicast group
+.SH LIBRARY
+Standard C library
+.RI ( libc ,\~ \-lc )
+.SH SYNOPSIS
+.nf
+.BR "#include <netinet/in.h>" " /* Definition of " IP* " constants */"
+.B #include <sys/socket.h>
+.P
+.BI int\~setsockopt(int\~ sockfd ,\~IPPROTO_IPV6,\~IPV6_ADD_MEMBERSHIP,
+.BI " const\~struct\~ipv6_mreq\~*" val ,\~sizeof(struct\~ipv6_mreq));
+.BI int\~setsockopt(int\~ sockfd ,\~IPPROTO_IPV6,\~IPV6_DROP_MEMBERSHIP,
+.BI " const\~struct\~ipv6_mreq\~*" val ,\~sizeof(struct\~ipv6_mreq));
+.fi
+.SH DESCRIPTION
+.TP
+.B IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP
+Control membership in multicast groups.
+Argument is a pointer to a
+.IR "struct ipv6_mreq" .
+.P
+See
+.BR IP_ADD_MULTICAST (2const)
+and
+.BR IP_DROP_MULTICAST (2const).
+.SH ERRORS
+See
+.BR IPPROTO_IPV6 (2const).
+See
+.BR setsockopt (2).
+See
+.BR ipv6 (7).
+.SH SEE ALSO
+.BR IPPROTO_IPV6 (2const),
+.BR setsockopt (2),
+.BR ipv6 (7)