]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/ipv4/netfilter.c
netfilter: nfmark routing in OUTPUT, mangle, NFQUEUE
[net-next-2.6.git] / net / ipv4 / netfilter.c
index 6efdb70b3eb2fb9106e031195f4caf56dd41d918..7c145d76384dfa28581dff50458f8ebc82137688 100644 (file)
@@ -125,6 +125,7 @@ struct ip_rt_info {
        __be32 daddr;
        __be32 saddr;
        u_int8_t tos;
+       u_int32_t mark;
 };
 
 static void nf_ip_saveroute(const struct sk_buff *skb,
@@ -138,6 +139,7 @@ static void nf_ip_saveroute(const struct sk_buff *skb,
                rt_info->tos = iph->tos;
                rt_info->daddr = iph->daddr;
                rt_info->saddr = iph->saddr;
+               rt_info->mark = skb->mark;
        }
 }
 
@@ -150,6 +152,7 @@ static int nf_ip_reroute(struct sk_buff *skb,
                const struct iphdr *iph = ip_hdr(skb);
 
                if (!(iph->tos == rt_info->tos
+                     && skb->mark == rt_info->mark
                      && iph->daddr == rt_info->daddr
                      && iph->saddr == rt_info->saddr))
                        return ip_route_me_harder(skb, RTN_UNSPEC);