ipv4: Use flowi4 in public route lookup interfaces.

Signed-off-by: David S. Miller <davem@davemloft.net>
Tento commit je obsažen v:
David S. Miller
2011-03-12 01:12:47 -05:00
rodič 68a5e3dd0a
revize 9d6ec93801
14 změnil soubory, kde provedl 231 přidání a 224 odebrání

Zobrazit soubor

@@ -465,18 +465,18 @@ static struct dst_entry* dccp_v4_route_skb(struct net *net, struct sock *sk,
struct sk_buff *skb)
{
struct rtable *rt;
struct flowi fl = {
.flowi_oif = skb_rtable(skb)->rt_iif,
.fl4_dst = ip_hdr(skb)->saddr,
.fl4_src = ip_hdr(skb)->daddr,
.fl4_tos = RT_CONN_FLAGS(sk),
.flowi_proto = sk->sk_protocol,
.fl4_sport = dccp_hdr(skb)->dccph_dport,
.fl4_dport = dccp_hdr(skb)->dccph_sport,
struct flowi4 fl4 = {
.flowi4_oif = skb_rtable(skb)->rt_iif,
.daddr = ip_hdr(skb)->saddr,
.saddr = ip_hdr(skb)->daddr,
.flowi4_tos = RT_CONN_FLAGS(sk),
.flowi4_proto = sk->sk_protocol,
.uli.ports.sport = dccp_hdr(skb)->dccph_dport,
.uli.ports.dport = dccp_hdr(skb)->dccph_sport,
};
security_skb_classify_flow(skb, &fl);
rt = ip_route_output_flow(net, &fl, sk);
security_skb_classify_flow(skb, flowi4_to_flowi(&fl4));
rt = ip_route_output_flow(net, &fl4, sk);
if (IS_ERR(rt)) {
IP_INC_STATS_BH(net, IPSTATS_MIB_OUTNOROUTES);
return NULL;