diff options
Diffstat (limited to 'net/ipv4/raw.c')
-rw-r--r-- | net/ipv4/raw.c | 6 |
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 | ||