diff -Naur linux-2.4.32.orig/net/ipv4/fib_rules.c linux-2.4.32/net/ipv4/fib_rules.c
--- linux-2.4.32.orig/net/ipv4/fib_rules.c	2006-07-28 14:43:02.526464086 +0100
+++ linux-2.4.32/net/ipv4/fib_rules.c	2006-07-28 14:42:49.007811631 +0100
@@ -326,8 +326,16 @@
 		    (r->r_tos && r->r_tos != key->tos) ||
 #endif
 #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 != (key->fwmark & CONFIG_IP_ROUTE_FWMARK_MASK)) ||
+#else
 		    (r->r_fwmark && r->r_fwmark != key->fwmark) ||
 #endif
+#endif
 		    (r->r_ifindex && r->r_ifindex != key->iif))
 			continue;
 
