|
|
|
@ -107,9 +107,8 @@ int __ip_local_out(struct net *net, struct sock *sk, struct sk_buff *skb) |
|
|
|
|
dst_output); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int ip_local_out(struct sock *sk, struct sk_buff *skb) |
|
|
|
|
int ip_local_out(struct net *net, struct sock *sk, struct sk_buff *skb) |
|
|
|
|
{ |
|
|
|
|
struct net *net = dev_net(skb_dst(skb)->dev); |
|
|
|
|
int err; |
|
|
|
|
|
|
|
|
|
err = __ip_local_out(net, sk, skb); |
|
|
|
@ -169,7 +168,7 @@ int ip_build_and_send_pkt(struct sk_buff *skb, const struct sock *sk, |
|
|
|
|
skb->mark = sk->sk_mark; |
|
|
|
|
|
|
|
|
|
/* Send it out. */ |
|
|
|
|
return ip_local_out(skb->sk, skb); |
|
|
|
|
return ip_local_out(net, skb->sk, skb); |
|
|
|
|
} |
|
|
|
|
EXPORT_SYMBOL_GPL(ip_build_and_send_pkt); |
|
|
|
|
|
|
|
|
@ -457,7 +456,7 @@ packet_routed: |
|
|
|
|
skb->priority = sk->sk_priority; |
|
|
|
|
skb->mark = sk->sk_mark; |
|
|
|
|
|
|
|
|
|
res = ip_local_out(sk, skb); |
|
|
|
|
res = ip_local_out(net, sk, skb); |
|
|
|
|
rcu_read_unlock(); |
|
|
|
|
return res; |
|
|
|
|
|
|
|
|
@ -1437,7 +1436,7 @@ int ip_send_skb(struct net *net, struct sk_buff *skb) |
|
|
|
|
{ |
|
|
|
|
int err; |
|
|
|
|
|
|
|
|
|
err = ip_local_out(skb->sk, skb); |
|
|
|
|
err = ip_local_out(net, skb->sk, skb); |
|
|
|
|
if (err) { |
|
|
|
|
if (err > 0) |
|
|
|
|
err = net_xmit_errno(err); |
|
|
|
|