--- linux-2.6.16.52.orig/net/ipv4/fib_rules.c	2007-07-17 12:27:21.000000000 +0100
+++ linux-2.6.16.52/net/ipv4/fib_rules.c	2007-07-17 12:42:55.000000000 +0100
@@ -298,8 +298,15 @@
 		    ((daddr^r->r_dst) & r->r_dstmask) ||
 		    (r->r_tos && r->r_tos != flp->fl4_tos) ||
 #ifdef CONFIG_IP_ROUTE_FWMARK
+#define CONFIG_IP_ROUTE_FWMARK_MASK 0xff
+#ifdef CONFIG_IP_ROUTE_FWMARK_MASK
+		/* we need to mask off supplied fwmark value
+		 * here - Martin Houston, Smoothwall Ltd. */
+		    (r->r_fwmark && r->r_fwmark != (flp->fl4_fwmark & CONFIG_IP_ROUTE_FWMARK_MASK)) ||
+#else
 		    (r->r_fwmark && r->r_fwmark != flp->fl4_fwmark) ||
 #endif
+#endif
 		    (r->r_ifindex && r->r_ifindex != flp->iif))
 			continue;
 
