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

Reply via email to