| .. | .. |
|---|
| 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 | { |
|---|