mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-19 12:24:34 +08:00
ipv4: Merge ip_local_out and ip_local_out_sk
It is confusing and silly hiding a parameter so modify all of the callers to pass in the appropriate socket or skb->sk if no socket is known. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b92dacd456
commit
e2cb77db08
@ -364,7 +364,7 @@ static int ipvlan_process_v4_outbound(struct sk_buff *skb)
|
|||||||
}
|
}
|
||||||
skb_dst_drop(skb);
|
skb_dst_drop(skb);
|
||||||
skb_dst_set(skb, &rt->dst);
|
skb_dst_set(skb, &rt->dst);
|
||||||
err = ip_local_out(skb);
|
err = ip_local_out(skb->sk, skb);
|
||||||
if (unlikely(net_xmit_eval(err)))
|
if (unlikely(net_xmit_eval(err)))
|
||||||
dev->stats.tx_errors++;
|
dev->stats.tx_errors++;
|
||||||
else
|
else
|
||||||
|
@ -282,7 +282,7 @@ static int pptp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
|
|||||||
ip_select_ident(sock_net(sk), skb, NULL);
|
ip_select_ident(sock_net(sk), skb, NULL);
|
||||||
ip_send_check(iph);
|
ip_send_check(iph);
|
||||||
|
|
||||||
ip_local_out(skb);
|
ip_local_out(skb->sk, skb);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
tx_error:
|
tx_error:
|
||||||
|
@ -76,7 +76,7 @@ static struct dst_entry *vrf_ip_check(struct dst_entry *dst, u32 cookie)
|
|||||||
|
|
||||||
static int vrf_ip_local_out(struct sock *sk, struct sk_buff *skb)
|
static int vrf_ip_local_out(struct sock *sk, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
return ip_local_out_sk(sk, skb);
|
return ip_local_out(sk, skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int vrf_v4_mtu(const struct dst_entry *dst)
|
static unsigned int vrf_v4_mtu(const struct dst_entry *dst)
|
||||||
@ -222,7 +222,7 @@ static netdev_tx_t vrf_process_v4_outbound(struct sk_buff *skb,
|
|||||||
RT_SCOPE_LINK);
|
RT_SCOPE_LINK);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ip_local_out(skb);
|
ret = ip_local_out(skb->sk, skb);
|
||||||
if (unlikely(net_xmit_eval(ret)))
|
if (unlikely(net_xmit_eval(ret)))
|
||||||
vrf_dev->stats.tx_errors++;
|
vrf_dev->stats.tx_errors++;
|
||||||
else
|
else
|
||||||
|
@ -113,11 +113,7 @@ int ip_do_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,
|
|||||||
int (*output)(struct net *, struct sock *, struct sk_buff *));
|
int (*output)(struct net *, struct sock *, struct sk_buff *));
|
||||||
void ip_send_check(struct iphdr *ip);
|
void ip_send_check(struct iphdr *ip);
|
||||||
int __ip_local_out(struct sock *sk, struct sk_buff *skb);
|
int __ip_local_out(struct sock *sk, struct sk_buff *skb);
|
||||||
int ip_local_out_sk(struct sock *sk, struct sk_buff *skb);
|
int ip_local_out(struct sock *sk, struct sk_buff *skb);
|
||||||
static inline int ip_local_out(struct sk_buff *skb)
|
|
||||||
{
|
|
||||||
return ip_local_out_sk(skb->sk, skb);
|
|
||||||
}
|
|
||||||
|
|
||||||
int ip_queue_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl);
|
int ip_queue_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl);
|
||||||
void ip_init(void);
|
void ip_init(void);
|
||||||
|
@ -397,7 +397,7 @@ static int igmpv3_sendpack(struct sk_buff *skb)
|
|||||||
|
|
||||||
pig->csum = ip_compute_csum(igmp_hdr(skb), igmplen);
|
pig->csum = ip_compute_csum(igmp_hdr(skb), igmplen);
|
||||||
|
|
||||||
return ip_local_out(skb);
|
return ip_local_out(skb->sk, skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int grec_size(struct ip_mc_list *pmc, int type, int gdel, int sdel)
|
static int grec_size(struct ip_mc_list *pmc, int type, int gdel, int sdel)
|
||||||
@ -739,7 +739,7 @@ static int igmp_send_report(struct in_device *in_dev, struct ip_mc_list *pmc,
|
|||||||
ih->group = group;
|
ih->group = group;
|
||||||
ih->csum = ip_compute_csum((void *)ih, sizeof(struct igmphdr));
|
ih->csum = ip_compute_csum((void *)ih, sizeof(struct igmphdr));
|
||||||
|
|
||||||
return ip_local_out(skb);
|
return ip_local_out(skb->sk, skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void igmp_gq_timer_expire(unsigned long data)
|
static void igmp_gq_timer_expire(unsigned long data)
|
||||||
|
@ -108,7 +108,7 @@ int __ip_local_out(struct sock *sk, struct sk_buff *skb)
|
|||||||
dst_output);
|
dst_output);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ip_local_out_sk(struct sock *sk, struct sk_buff *skb)
|
int ip_local_out(struct sock *sk, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
struct net *net = dev_net(skb_dst(skb)->dev);
|
struct net *net = dev_net(skb_dst(skb)->dev);
|
||||||
int err;
|
int err;
|
||||||
@ -119,7 +119,7 @@ int ip_local_out_sk(struct sock *sk, struct sk_buff *skb)
|
|||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(ip_local_out_sk);
|
EXPORT_SYMBOL_GPL(ip_local_out);
|
||||||
|
|
||||||
static inline int ip_select_ttl(struct inet_sock *inet, struct dst_entry *dst)
|
static inline int ip_select_ttl(struct inet_sock *inet, struct dst_entry *dst)
|
||||||
{
|
{
|
||||||
@ -169,7 +169,7 @@ int ip_build_and_send_pkt(struct sk_buff *skb, const struct sock *sk,
|
|||||||
skb->mark = sk->sk_mark;
|
skb->mark = sk->sk_mark;
|
||||||
|
|
||||||
/* Send it out. */
|
/* Send it out. */
|
||||||
return ip_local_out(skb);
|
return ip_local_out(skb->sk, skb);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(ip_build_and_send_pkt);
|
EXPORT_SYMBOL_GPL(ip_build_and_send_pkt);
|
||||||
|
|
||||||
@ -456,7 +456,7 @@ packet_routed:
|
|||||||
skb->priority = sk->sk_priority;
|
skb->priority = sk->sk_priority;
|
||||||
skb->mark = sk->sk_mark;
|
skb->mark = sk->sk_mark;
|
||||||
|
|
||||||
res = ip_local_out_sk(sk, skb);
|
res = ip_local_out(sk, skb);
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
@ -1436,7 +1436,7 @@ int ip_send_skb(struct net *net, struct sk_buff *skb)
|
|||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
err = ip_local_out(skb);
|
err = ip_local_out(skb->sk, skb);
|
||||||
if (err) {
|
if (err) {
|
||||||
if (err > 0)
|
if (err > 0)
|
||||||
err = net_xmit_errno(err);
|
err = net_xmit_errno(err);
|
||||||
|
@ -79,7 +79,7 @@ int iptunnel_xmit(struct sock *sk, struct rtable *rt, struct sk_buff *skb,
|
|||||||
__ip_select_ident(dev_net(rt->dst.dev), iph,
|
__ip_select_ident(dev_net(rt->dst.dev), iph,
|
||||||
skb_shinfo(skb)->gso_segs ?: 1);
|
skb_shinfo(skb)->gso_segs ?: 1);
|
||||||
|
|
||||||
err = ip_local_out_sk(sk, skb);
|
err = ip_local_out(sk, skb);
|
||||||
if (unlikely(net_xmit_eval(err)))
|
if (unlikely(net_xmit_eval(err)))
|
||||||
pkt_len = 0;
|
pkt_len = 0;
|
||||||
return pkt_len;
|
return pkt_len;
|
||||||
|
@ -63,7 +63,7 @@ synproxy_send_tcp(const struct synproxy_net *snet,
|
|||||||
nf_conntrack_get(nfct);
|
nf_conntrack_get(nfct);
|
||||||
}
|
}
|
||||||
|
|
||||||
ip_local_out(nskb);
|
ip_local_out(nskb->sk, nskb);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
free_nskb:
|
free_nskb:
|
||||||
|
@ -92,7 +92,7 @@ void nf_dup_ipv4(struct net *net, struct sk_buff *skb, unsigned int hooknum,
|
|||||||
|
|
||||||
if (nf_dup_ipv4_route(net, skb, gw, oif)) {
|
if (nf_dup_ipv4_route(net, skb, gw, oif)) {
|
||||||
__this_cpu_write(nf_skb_duplicated, true);
|
__this_cpu_write(nf_skb_duplicated, true);
|
||||||
ip_local_out(skb);
|
ip_local_out(skb->sk, skb);
|
||||||
__this_cpu_write(nf_skb_duplicated, false);
|
__this_cpu_write(nf_skb_duplicated, false);
|
||||||
} else {
|
} else {
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
|
@ -157,7 +157,7 @@ void nf_send_reset(struct net *net, struct sk_buff *oldskb, int hook)
|
|||||||
dev_queue_xmit(nskb);
|
dev_queue_xmit(nskb);
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
ip_local_out(nskb);
|
ip_local_out(nskb->sk, nskb);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1049,7 +1049,7 @@ ip_vs_tunnel_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
|
|||||||
|
|
||||||
ret = ip_vs_tunnel_xmit_prepare(skb, cp);
|
ret = ip_vs_tunnel_xmit_prepare(skb, cp);
|
||||||
if (ret == NF_ACCEPT)
|
if (ret == NF_ACCEPT)
|
||||||
ip_local_out(skb);
|
ip_local_out(skb->sk, skb);
|
||||||
else if (ret == NF_DROP)
|
else if (ret == NF_DROP)
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
Loading…
Reference in New Issue
Block a user