fib_validate_source(): pass sk_buff instead of mark
[pandora-kernel.git] / net / ipv4 / fib_frontend.c
index 4510883..f162f84 100644 (file)
@@ -188,9 +188,9 @@ EXPORT_SYMBOL(inet_dev_addr_type);
  * - check, that packet arrived from expected physical interface.
  * called with rcu_read_lock()
  */
-int fib_validate_source(__be32 src, __be32 dst, u8 tos, int oif,
-                       struct net_device *dev, __be32 *spec_dst,
-                       u32 *itag, u32 mark)
+int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst, u8 tos,
+                       int oif, struct net_device *dev, __be32 *spec_dst,
+                       u32 *itag)
 {
        struct in_device *in_dev;
        struct flowi4 fl4;
@@ -202,7 +202,6 @@ int fib_validate_source(__be32 src, __be32 dst, u8 tos, int oif,
 
        fl4.flowi4_oif = 0;
        fl4.flowi4_iif = oif;
-       fl4.flowi4_mark = mark;
        fl4.daddr = src;
        fl4.saddr = dst;
        fl4.flowi4_tos = tos;
@@ -214,8 +213,7 @@ int fib_validate_source(__be32 src, __be32 dst, u8 tos, int oif,
                no_addr = in_dev->ifa_list == NULL;
                rpf = IN_DEV_RPFILTER(in_dev);
                accept_local = IN_DEV_ACCEPT_LOCAL(in_dev);
-               if (mark && !IN_DEV_SRC_VMARK(in_dev))
-                       fl4.flowi4_mark = 0;
+               fl4.flowi4_mark = IN_DEV_SRC_VMARK(in_dev) ? skb->mark : 0;
        }
 
        if (in_dev == NULL)