summaryrefslogtreecommitdiff
path: root/net/ipv4/raw.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2017-05-02 09:48:26 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2017-05-02 09:48:26 -0700
commit0337966d121ebebf73a1c346123e8112796e684e (patch)
treec0d4388591e72dc5a26ee976a9cbca70f6bafbbd /net/ipv4/raw.c
parent7c5bb4ac2b76d2a09256aec8a7d584bf3e2b0466 (diff)
parent8a038b83e012097a7ac6cfb9f6c5fac1da8fad6e (diff)
downloadlinux-0337966d121ebebf73a1c346123e8112796e684e.tar.gz
linux-0337966d121ebebf73a1c346123e8112796e684e.tar.xz
Merge branch 'next' into for-linus
Prepare input updates for 4.12 merge window.
Diffstat (limited to 'net/ipv4/raw.c')
-rw-r--r--net/ipv4/raw.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
index 4e49e5cb001c..8119e1f66e03 100644
--- a/net/ipv4/raw.c
+++ b/net/ipv4/raw.c
@@ -383,6 +383,9 @@ static int raw_send_hdrinc(struct sock *sk, struct flowi4 *fl4,
sock_tx_timestamp(sk, sockc->tsflags, &skb_shinfo(skb)->tx_flags);
+ if (flags & MSG_CONFIRM)
+ skb_set_dst_pending_confirm(skb, 1);
+
skb->transport_header = skb->network_header;
err = -EFAULT;
if (memcpy_from_msg(iph, msg, length))
@@ -666,7 +669,8 @@ out:
return len;
do_confirm:
- dst_confirm(&rt->dst);
+ if (msg->msg_flags & MSG_PROBE)
+ dst_confirm_neigh(&rt->dst, &fl4.daddr);
if (!(msg->msg_flags & MSG_PROBE) || len)
goto back_from_confirm;
err = 0;