|
@@ -315,9 +315,9 @@ static void ip_copy_addrs(struct iphdr *iph, const struct flowi4 *fl4)
|
|
|
sizeof(fl4->saddr) + sizeof(fl4->daddr));
|
|
|
}
|
|
|
|
|
|
-int ip_queue_xmit(struct sk_buff *skb, struct flowi *fl)
|
|
|
+/* Note: skb->sk can be different from sk, in case of tunnels */
|
|
|
+int ip_queue_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl)
|
|
|
{
|
|
|
- struct sock *sk = skb->sk;
|
|
|
struct inet_sock *inet = inet_sk(sk);
|
|
|
struct ip_options_rcu *inet_opt;
|
|
|
struct flowi4 *fl4;
|
|
@@ -389,6 +389,7 @@ packet_routed:
|
|
|
ip_select_ident_more(skb, &rt->dst, sk,
|
|
|
(skb_shinfo(skb)->gso_segs ?: 1) - 1);
|
|
|
|
|
|
+ /* TODO : should we use skb->sk here instead of sk ? */
|
|
|
skb->priority = sk->sk_priority;
|
|
|
skb->mark = sk->sk_mark;
|
|
|
|