ip/options: explicitly provide net ns to __ip_options_echo()
__ip_options_echo() uses the current network namespace, and currently retrives it via skb->dst->dev. This commit adds an explicit 'net' argument to __ip_options_echo() and update all the call sites to provide it, usually via a simpler sock_net(). After this change, __ip_options_echo() no more needs to access skb->dst and we can drop a couple of hack to preserve such info in the rx path. Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
a1e155ece1
commit
91ed1e666a
@@ -80,7 +80,8 @@ static void ip_cmsg_recv_opts(struct msghdr *msg, struct sk_buff *skb)
|
||||
}
|
||||
|
||||
|
||||
static void ip_cmsg_recv_retopts(struct msghdr *msg, struct sk_buff *skb)
|
||||
static void ip_cmsg_recv_retopts(struct net *net, struct msghdr *msg,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
unsigned char optbuf[sizeof(struct ip_options) + 40];
|
||||
struct ip_options *opt = (struct ip_options *)optbuf;
|
||||
@@ -88,7 +89,7 @@ static void ip_cmsg_recv_retopts(struct msghdr *msg, struct sk_buff *skb)
|
||||
if (IPCB(skb)->opt.optlen == 0)
|
||||
return;
|
||||
|
||||
if (ip_options_echo(opt, skb)) {
|
||||
if (ip_options_echo(net, opt, skb)) {
|
||||
msg->msg_flags |= MSG_CTRUNC;
|
||||
return;
|
||||
}
|
||||
@@ -204,7 +205,7 @@ void ip_cmsg_recv_offset(struct msghdr *msg, struct sock *sk,
|
||||
}
|
||||
|
||||
if (flags & IP_CMSG_RETOPTS) {
|
||||
ip_cmsg_recv_retopts(msg, skb);
|
||||
ip_cmsg_recv_retopts(sock_net(sk), msg, skb);
|
||||
|
||||
flags &= ~IP_CMSG_RETOPTS;
|
||||
if (!flags)
|
||||
|
Reference in New Issue
Block a user