[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6c039e090908040036j38666152y2db1d4c55529eaff@mail.gmail.com>
Date: Tue, 4 Aug 2009 15:36:46 +0800
From: Chia-chi Yeh (葉家齊) <chiachi@...roid.com>
To: David Miller <davem@...emloft.net>
Cc: john.dykstra1@...il.com, akpm@...ux-foundation.org,
linux-kernel@...r.kernel.org, netdev@...r.kernel.org
Subject: Re: [PATCH] net: Keep interface binding when sending packets with
ipi_ifindex = 0
After thinking more deeply, I believe that IPv6 does the right thing
and IPv4 does not. SO_BINDTODEVICE requires CAP_NET_RAW, so it is a
privileged operation. Therefore, it looks weird to me if one can
specify other interface than the bound one without the same
capability. The following patch makes the behavior in IPv4 and IPv6
identical. Thanks for your help.
Chia-chi
--- a/net/ipv4/ip_sockglue.c 2009-08-04 15:11:39.000000000 +0800
+++ b/net/ipv4/ip_sockglue.c 2009-08-04 15:17:05.000000000 +0800
@@ -213,7 +213,11 @@
if (cmsg->cmsg_len != CMSG_LEN(sizeof(struct
in_pktinfo)))
return -EINVAL;
info = (struct in_pktinfo *)CMSG_DATA(cmsg);
- ipc->oif = info->ipi_ifindex;
+ if (info->ipi_ifindex) {
+ if (ipc->oif && info->ipi_ifindex != ipc->oif)
+ return -EINVAL;
+ ipc->oif = info->ipi_ifindex;
+ }
ipc->addr = info->ipi_spec_dst.s_addr;
break;
}
On Tue, Aug 4, 2009 at 12:23 PM, David Miller<davem@...emloft.net> wrote:
> From: John Dykstra <john.dykstra1@...il.com>
> Date: Wed, 29 Jul 2009 19:10:21 -0500
>
>> I guess Dave's letting this stand. I'm posting this just to make sure
>> this is an explicit decision.
>
> I'm still thinking about this.
>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists