aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/raw.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/raw.c')
-rw-r--r--net/ipv4/raw.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
index 193db03540ad..41e1d2845c8f 100644
--- a/net/ipv4/raw.c
+++ b/net/ipv4/raw.c
@@ -299,7 +299,7 @@ static int raw_rcv_skb(struct sock *sk, struct sk_buff *skb)
299{ 299{
300 /* Charge it to the socket. */ 300 /* Charge it to the socket. */
301 301
302 ipv4_pktinfo_prepare(skb); 302 ipv4_pktinfo_prepare(sk, skb);
303 if (sock_queue_rcv_skb(sk, skb) < 0) { 303 if (sock_queue_rcv_skb(sk, skb) < 0) {
304 kfree_skb(skb); 304 kfree_skb(skb);
305 return NET_RX_DROP; 305 return NET_RX_DROP;
@@ -519,6 +519,8 @@ static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
519 ipc.addr = inet->inet_saddr; 519 ipc.addr = inet->inet_saddr;
520 ipc.opt = NULL; 520 ipc.opt = NULL;
521 ipc.tx_flags = 0; 521 ipc.tx_flags = 0;
522 ipc.ttl = 0;
523 ipc.tos = -1;
522 ipc.oif = sk->sk_bound_dev_if; 524 ipc.oif = sk->sk_bound_dev_if;
523 525
524 if (msg->msg_controllen) { 526 if (msg->msg_controllen) {
@@ -558,7 +560,7 @@ static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
558 daddr = ipc.opt->opt.faddr; 560 daddr = ipc.opt->opt.faddr;
559 } 561 }
560 } 562 }
561 tos = RT_CONN_FLAGS(sk); 563 tos = get_rtconn_flags(&ipc, sk);
562 if (msg->msg_flags & MSG_DONTROUTE) 564 if (msg->msg_flags & MSG_DONTROUTE)
563 tos |= RTO_ONLINK; 565 tos |= RTO_ONLINK;
564 566