Here is my try to extend ip(4) to also document struct ip_mreqn.
Not sure what is the best way to document the option to use either struct
ip_mreq or struct ip_mreqn with IP_ADD_MEMBERSHIP.
--
:wq Claudio
Index: ip.4
===================================================================
RCS file: /cvs/src/share/man/man4/ip.4,v
retrieving revision 1.41
diff -u -p -r1.41 ip.4
--- ip.4 18 Aug 2016 11:45:18 -0000 1.41
+++ ip.4 7 Jan 2021 14:58:54 -0000
@@ -411,13 +411,21 @@ setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERS
.Pp
where
.Fa mreq
-is the following structure:
+is either the following structure:
.Bd -literal -offset indent
struct ip_mreq {
struct in_addr imr_multiaddr; /* multicast group to join */
struct in_addr imr_interface; /* interface to join on */
}
.Ed
+or
+.Bd -literal -offset indent
+struct ip_mreqn {
+ struct in_addr imr_multiaddr; /* multicast group to join */
+ struct in_addr imr_address; /* local IP address of interface */
+ int imr_ifindex; /* interface index to join*/
+};
+.Ed
.Pp
.Va imr_interface
should
@@ -428,6 +436,12 @@ or the
.Tn IP
address of a particular multicast-capable interface if
the host is multihomed.
+.Va imr_ifindex
+of
+.Va struct ip_mreqn
+can be set to the interface index instead of specifying the
+.Tn IP
+address of a particular multicast-capable interface.
Membership is associated with a single interface;
programs running on multihomed hosts may need to
join the same group on more than one interface.