|
@@ -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)
|