Control: tag -1 +confirmed +upstream , retitle -1 ip(7) incorrect structure for
IP_MULTICAST_IF socket option
Hi,
On Sun, Dec 26, 2010 at 12:16:00AM +0900, Tanaka Akira wrote:
ip(7) describes that the argument for IP_MULTICAST_IF is ip_mreqn or ip_mreq:
IP_MULTICAST_IF
Set the local device for a multicast socket. Argument is an
ip_mreqn or ip_mreq structure similar to IP_ADD_MEMBERSHIP.
But it should be ip_mreqn or in_addr.
It is different from IP_ADD_MEMBERSHIP.
At the original API of BSD multicast, IP_MULTICAST_IF takes struct in_addr.
http://www.kohala.com/start/mcast.api.txt
do_ip_setsockopt() in Linux net/ipv4/ip_sockglue.c seems to support
ip_mreqn and in_addr.
Indeed, your remark is applicable to all Linux kernels before v3.5.
Then it has been fixed in May 2012, it now accepts ip_mreqn, old ip_mreq, and
in_addr
http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commitdiff;h=3a084ddb4bf299a6e898a9a07c89f3917f0713f7
However, I wonder if Michael wants to document old kernel interfaces (i.e.
mention in_addr).
A patch added (without mention of in_addr though).
--
Simon Paillard
From 589b8366080d4e6ddcd6006180b2a22573192c16 Mon Sep 17 00:00:00 2001
From: Simon Paillard spaill...@debian.org
Date: Sun, 27 Jan 2013 23:56:04 +0100
Subject: [PATCH] ip.7: IP_MULTICAST_IF setsockopt recognizes struct mreq
(compatibility)
Kernel added compatibility only recently in
3a084ddb4bf299a6e898a9a07c89f3917f0713f7
See: http://bugs.debian.org/607979
---
man7/ip.7 |3 +++
1 file changed, 3 insertions(+)
diff --git a/man7/ip.7 b/man7/ip.7
index ed8cbfc..b750863 100644
--- a/man7/ip.7
+++ b/man7/ip.7
@@ -424,6 +424,9 @@ Argument is an
.I ip_mreqn
or
.I ip_mreq
+.\ net: IP_MULTICAST_IF setsockopt now recognizes struct mreq
+.\ Commit: 3a084ddb4bf299a6e898a9a07c89f3917f0713f7
+(since Linux 3.5)
structure similar to
.BR IP_ADD_MEMBERSHIP .
.IP
--
1.7.10.4