.. | .. |
---|
82 | 82 | } |
---|
83 | 83 | EXPORT_SYMBOL(ip_route_me_harder); |
---|
84 | 84 | |
---|
85 | | -int nf_ip_reroute(struct sk_buff *skb, const struct nf_queue_entry *entry) |
---|
86 | | -{ |
---|
87 | | - const struct ip_rt_info *rt_info = nf_queue_entry_reroute(entry); |
---|
88 | | - |
---|
89 | | - if (entry->state.hook == NF_INET_LOCAL_OUT) { |
---|
90 | | - const struct iphdr *iph = ip_hdr(skb); |
---|
91 | | - |
---|
92 | | - if (!(iph->tos == rt_info->tos && |
---|
93 | | - skb->mark == rt_info->mark && |
---|
94 | | - iph->daddr == rt_info->daddr && |
---|
95 | | - iph->saddr == rt_info->saddr)) |
---|
96 | | - return ip_route_me_harder(entry->state.net, entry->state.sk, |
---|
97 | | - skb, RTN_UNSPEC); |
---|
98 | | - } |
---|
99 | | - return 0; |
---|
100 | | -} |
---|
101 | | -EXPORT_SYMBOL_GPL(nf_ip_reroute); |
---|
102 | | - |
---|
103 | 85 | int nf_ip_route(struct net *net, struct dst_entry **dst, struct flowi *fl, |
---|
104 | 86 | bool strict __always_unused) |
---|
105 | 87 | { |
---|