aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2011-01-14 07:36:42 -0500
committerPatrick McHardy <kaber@trash.net>2011-01-14 07:36:42 -0500
commitc7066f70d9610df0b9406cc635fc09e86136e714 (patch)
treece98855b2c1ba2da15b7b47fc7a447d1903c4d89
parentae90bdeaeac6b964b7a1e853a90a19f358a9ac20 (diff)
netfilter: fix Kconfig dependencies
Fix dependencies of netfilter realm match: it depends on NET_CLS_ROUTE, which itself depends on NET_SCHED; this dependency is missing from netfilter. Since matching on realms is also useful without having NET_SCHED enabled and the option really only controls whether the tclassid member is included in route and dst entries, rename the config option to IP_ROUTE_CLASSID and move it outside of traffic scheduling context to get rid of the NET_SCHED dependeny. Reported-by: Vladis Kletnieks <Valdis.Kletnieks@vt.edu> Signed-off-by: Patrick McHardy <kaber@trash.net>
-rw-r--r--include/net/dst.h2
-rw-r--r--include/net/ip_fib.h6
-rw-r--r--net/ipv4/Kconfig4
-rw-r--r--net/ipv4/fib_rules.c10
-rw-r--r--net/ipv4/fib_semantics.c14
-rw-r--r--net/ipv4/ip_input.c2
-rw-r--r--net/ipv4/route.c26
-rw-r--r--net/netfilter/Kconfig2
-rw-r--r--net/sched/Kconfig5
-rw-r--r--net/sched/cls_flow.c2
-rw-r--r--net/sched/em_meta.c2
11 files changed, 37 insertions, 38 deletions
diff --git a/include/net/dst.h b/include/net/dst.h
index a5bd72646d65..6baba836ad8b 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -72,7 +72,7 @@ struct dst_entry {
72 72
73 u32 metrics[RTAX_MAX]; 73 u32 metrics[RTAX_MAX];
74 74
75#ifdef CONFIG_NET_CLS_ROUTE 75#ifdef CONFIG_IP_ROUTE_CLASSID
76 __u32 tclassid; 76 __u32 tclassid;
77#else 77#else
78 __u32 __pad2; 78 __u32 __pad2;
diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h
index 07bdb5e9e8ac..65d1fcdbc63b 100644
--- a/include/net/ip_fib.h
+++ b/include/net/ip_fib.h
@@ -55,7 +55,7 @@ struct fib_nh {
55 int nh_weight; 55 int nh_weight;
56 int nh_power; 56 int nh_power;
57#endif 57#endif
58#ifdef CONFIG_NET_CLS_ROUTE 58#ifdef CONFIG_IP_ROUTE_CLASSID
59 __u32 nh_tclassid; 59 __u32 nh_tclassid;
60#endif 60#endif
61 int nh_oif; 61 int nh_oif;
@@ -201,7 +201,7 @@ static inline int fib_lookup(struct net *net, const struct flowi *flp,
201extern int __net_init fib4_rules_init(struct net *net); 201extern int __net_init fib4_rules_init(struct net *net);
202extern void __net_exit fib4_rules_exit(struct net *net); 202extern void __net_exit fib4_rules_exit(struct net *net);
203 203
204#ifdef CONFIG_NET_CLS_ROUTE 204#ifdef CONFIG_IP_ROUTE_CLASSID
205extern u32 fib_rules_tclass(struct fib_result *res); 205extern u32 fib_rules_tclass(struct fib_result *res);
206#endif 206#endif
207 207
@@ -235,7 +235,7 @@ extern struct fib_table *fib_hash_table(u32 id);
235 235
236static inline void fib_combine_itag(u32 *itag, struct fib_result *res) 236static inline void fib_combine_itag(u32 *itag, struct fib_result *res)
237{ 237{
238#ifdef CONFIG_NET_CLS_ROUTE 238#ifdef CONFIG_IP_ROUTE_CLASSID
239#ifdef CONFIG_IP_MULTIPLE_TABLES 239#ifdef CONFIG_IP_MULTIPLE_TABLES
240 u32 rtag; 240 u32 rtag;
241#endif 241#endif
diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig
index 9e95d7fb6d5a..dcb2e18f6f8e 100644
--- a/net/ipv4/Kconfig
+++ b/net/ipv4/Kconfig
@@ -140,6 +140,9 @@ config IP_ROUTE_VERBOSE
140 handled by the klogd daemon which is responsible for kernel messages 140 handled by the klogd daemon which is responsible for kernel messages
141 ("man klogd"). 141 ("man klogd").
142 142
143config IP_ROUTE_CLASSID
144 bool
145
143config IP_PNP 146config IP_PNP
144 bool "IP: kernel level autoconfiguration" 147 bool "IP: kernel level autoconfiguration"
145 help 148 help
@@ -655,4 +658,3 @@ config TCP_MD5SIG
655 on the Internet. 658 on the Internet.
656 659
657 If unsure, say N. 660 If unsure, say N.
658
diff --git a/net/ipv4/fib_rules.c b/net/ipv4/fib_rules.c
index 7981a24f5c7b..9cefe72029cf 100644
--- a/net/ipv4/fib_rules.c
+++ b/net/ipv4/fib_rules.c
@@ -41,12 +41,12 @@ struct fib4_rule {
41 __be32 srcmask; 41 __be32 srcmask;
42 __be32 dst; 42 __be32 dst;
43 __be32 dstmask; 43 __be32 dstmask;
44#ifdef CONFIG_NET_CLS_ROUTE 44#ifdef CONFIG_IP_ROUTE_CLASSID
45 u32 tclassid; 45 u32 tclassid;
46#endif 46#endif
47}; 47};
48 48
49#ifdef CONFIG_NET_CLS_ROUTE 49#ifdef CONFIG_IP_ROUTE_CLASSID
50u32 fib_rules_tclass(struct fib_result *res) 50u32 fib_rules_tclass(struct fib_result *res)
51{ 51{
52 return res->r ? ((struct fib4_rule *) res->r)->tclassid : 0; 52 return res->r ? ((struct fib4_rule *) res->r)->tclassid : 0;
@@ -165,7 +165,7 @@ static int fib4_rule_configure(struct fib_rule *rule, struct sk_buff *skb,
165 if (frh->dst_len) 165 if (frh->dst_len)
166 rule4->dst = nla_get_be32(tb[FRA_DST]); 166 rule4->dst = nla_get_be32(tb[FRA_DST]);
167 167
168#ifdef CONFIG_NET_CLS_ROUTE 168#ifdef CONFIG_IP_ROUTE_CLASSID
169 if (tb[FRA_FLOW]) 169 if (tb[FRA_FLOW])
170 rule4->tclassid = nla_get_u32(tb[FRA_FLOW]); 170 rule4->tclassid = nla_get_u32(tb[FRA_FLOW]);
171#endif 171#endif
@@ -195,7 +195,7 @@ static int fib4_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh,
195 if (frh->tos && (rule4->tos != frh->tos)) 195 if (frh->tos && (rule4->tos != frh->tos))
196 return 0; 196 return 0;
197 197
198#ifdef CONFIG_NET_CLS_ROUTE 198#ifdef CONFIG_IP_ROUTE_CLASSID
199 if (tb[FRA_FLOW] && (rule4->tclassid != nla_get_u32(tb[FRA_FLOW]))) 199 if (tb[FRA_FLOW] && (rule4->tclassid != nla_get_u32(tb[FRA_FLOW])))
200 return 0; 200 return 0;
201#endif 201#endif
@@ -224,7 +224,7 @@ static int fib4_rule_fill(struct fib_rule *rule, struct sk_buff *skb,
224 if (rule4->src_len) 224 if (rule4->src_len)
225 NLA_PUT_BE32(skb, FRA_SRC, rule4->src); 225 NLA_PUT_BE32(skb, FRA_SRC, rule4->src);
226 226
227#ifdef CONFIG_NET_CLS_ROUTE 227#ifdef CONFIG_IP_ROUTE_CLASSID
228 if (rule4->tclassid) 228 if (rule4->tclassid)
229 NLA_PUT_U32(skb, FRA_FLOW, rule4->tclassid); 229 NLA_PUT_U32(skb, FRA_FLOW, rule4->tclassid);
230#endif 230#endif
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
index 3e0da3ef6116..a72c62d03106 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -200,7 +200,7 @@ static inline int nh_comp(const struct fib_info *fi, const struct fib_info *ofi)
200#ifdef CONFIG_IP_ROUTE_MULTIPATH 200#ifdef CONFIG_IP_ROUTE_MULTIPATH
201 nh->nh_weight != onh->nh_weight || 201 nh->nh_weight != onh->nh_weight ||
202#endif 202#endif
203#ifdef CONFIG_NET_CLS_ROUTE 203#ifdef CONFIG_IP_ROUTE_CLASSID
204 nh->nh_tclassid != onh->nh_tclassid || 204 nh->nh_tclassid != onh->nh_tclassid ||
205#endif 205#endif
206 ((nh->nh_flags ^ onh->nh_flags) & ~RTNH_F_DEAD)) 206 ((nh->nh_flags ^ onh->nh_flags) & ~RTNH_F_DEAD))
@@ -422,7 +422,7 @@ static int fib_get_nhs(struct fib_info *fi, struct rtnexthop *rtnh,
422 422
423 nla = nla_find(attrs, attrlen, RTA_GATEWAY); 423 nla = nla_find(attrs, attrlen, RTA_GATEWAY);
424 nexthop_nh->nh_gw = nla ? nla_get_be32(nla) : 0; 424 nexthop_nh->nh_gw = nla ? nla_get_be32(nla) : 0;
425#ifdef CONFIG_NET_CLS_ROUTE 425#ifdef CONFIG_IP_ROUTE_CLASSID
426 nla = nla_find(attrs, attrlen, RTA_FLOW); 426 nla = nla_find(attrs, attrlen, RTA_FLOW);
427 nexthop_nh->nh_tclassid = nla ? nla_get_u32(nla) : 0; 427 nexthop_nh->nh_tclassid = nla ? nla_get_u32(nla) : 0;
428#endif 428#endif
@@ -476,7 +476,7 @@ int fib_nh_match(struct fib_config *cfg, struct fib_info *fi)
476 nla = nla_find(attrs, attrlen, RTA_GATEWAY); 476 nla = nla_find(attrs, attrlen, RTA_GATEWAY);
477 if (nla && nla_get_be32(nla) != nh->nh_gw) 477 if (nla && nla_get_be32(nla) != nh->nh_gw)
478 return 1; 478 return 1;
479#ifdef CONFIG_NET_CLS_ROUTE 479#ifdef CONFIG_IP_ROUTE_CLASSID
480 nla = nla_find(attrs, attrlen, RTA_FLOW); 480 nla = nla_find(attrs, attrlen, RTA_FLOW);
481 if (nla && nla_get_u32(nla) != nh->nh_tclassid) 481 if (nla && nla_get_u32(nla) != nh->nh_tclassid)
482 return 1; 482 return 1;
@@ -783,7 +783,7 @@ struct fib_info *fib_create_info(struct fib_config *cfg)
783 goto err_inval; 783 goto err_inval;
784 if (cfg->fc_gw && fi->fib_nh->nh_gw != cfg->fc_gw) 784 if (cfg->fc_gw && fi->fib_nh->nh_gw != cfg->fc_gw)
785 goto err_inval; 785 goto err_inval;
786#ifdef CONFIG_NET_CLS_ROUTE 786#ifdef CONFIG_IP_ROUTE_CLASSID
787 if (cfg->fc_flow && fi->fib_nh->nh_tclassid != cfg->fc_flow) 787 if (cfg->fc_flow && fi->fib_nh->nh_tclassid != cfg->fc_flow)
788 goto err_inval; 788 goto err_inval;
789#endif 789#endif
@@ -796,7 +796,7 @@ struct fib_info *fib_create_info(struct fib_config *cfg)
796 nh->nh_oif = cfg->fc_oif; 796 nh->nh_oif = cfg->fc_oif;
797 nh->nh_gw = cfg->fc_gw; 797 nh->nh_gw = cfg->fc_gw;
798 nh->nh_flags = cfg->fc_flags; 798 nh->nh_flags = cfg->fc_flags;
799#ifdef CONFIG_NET_CLS_ROUTE 799#ifdef CONFIG_IP_ROUTE_CLASSID
800 nh->nh_tclassid = cfg->fc_flow; 800 nh->nh_tclassid = cfg->fc_flow;
801#endif 801#endif
802#ifdef CONFIG_IP_ROUTE_MULTIPATH 802#ifdef CONFIG_IP_ROUTE_MULTIPATH
@@ -1006,7 +1006,7 @@ int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
1006 1006
1007 if (fi->fib_nh->nh_oif) 1007 if (fi->fib_nh->nh_oif)
1008 NLA_PUT_U32(skb, RTA_OIF, fi->fib_nh->nh_oif); 1008 NLA_PUT_U32(skb, RTA_OIF, fi->fib_nh->nh_oif);
1009#ifdef CONFIG_NET_CLS_ROUTE 1009#ifdef CONFIG_IP_ROUTE_CLASSID
1010 if (fi->fib_nh[0].nh_tclassid) 1010 if (fi->fib_nh[0].nh_tclassid)
1011 NLA_PUT_U32(skb, RTA_FLOW, fi->fib_nh[0].nh_tclassid); 1011 NLA_PUT_U32(skb, RTA_FLOW, fi->fib_nh[0].nh_tclassid);
1012#endif 1012#endif
@@ -1031,7 +1031,7 @@ int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
1031 1031
1032 if (nh->nh_gw) 1032 if (nh->nh_gw)
1033 NLA_PUT_BE32(skb, RTA_GATEWAY, nh->nh_gw); 1033 NLA_PUT_BE32(skb, RTA_GATEWAY, nh->nh_gw);
1034#ifdef CONFIG_NET_CLS_ROUTE 1034#ifdef CONFIG_IP_ROUTE_CLASSID
1035 if (nh->nh_tclassid) 1035 if (nh->nh_tclassid)
1036 NLA_PUT_U32(skb, RTA_FLOW, nh->nh_tclassid); 1036 NLA_PUT_U32(skb, RTA_FLOW, nh->nh_tclassid);
1037#endif 1037#endif
diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c
index d859bcc26cb7..d7b2b0987a3b 100644
--- a/net/ipv4/ip_input.c
+++ b/net/ipv4/ip_input.c
@@ -340,7 +340,7 @@ static int ip_rcv_finish(struct sk_buff *skb)
340 } 340 }
341 } 341 }
342 342
343#ifdef CONFIG_NET_CLS_ROUTE 343#ifdef CONFIG_IP_ROUTE_CLASSID
344 if (unlikely(skb_dst(skb)->tclassid)) { 344 if (unlikely(skb_dst(skb)->tclassid)) {
345 struct ip_rt_acct *st = this_cpu_ptr(ip_rt_acct); 345 struct ip_rt_acct *st = this_cpu_ptr(ip_rt_acct);
346 u32 idx = skb_dst(skb)->tclassid; 346 u32 idx = skb_dst(skb)->tclassid;
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 66610ea3c87b..f70ae1bccb8a 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -511,7 +511,7 @@ static const struct file_operations rt_cpu_seq_fops = {
511 .release = seq_release, 511 .release = seq_release,
512}; 512};
513 513
514#ifdef CONFIG_NET_CLS_ROUTE 514#ifdef CONFIG_IP_ROUTE_CLASSID
515static int rt_acct_proc_show(struct seq_file *m, void *v) 515static int rt_acct_proc_show(struct seq_file *m, void *v)
516{ 516{
517 struct ip_rt_acct *dst, *src; 517 struct ip_rt_acct *dst, *src;
@@ -564,14 +564,14 @@ static int __net_init ip_rt_do_proc_init(struct net *net)
564 if (!pde) 564 if (!pde)
565 goto err2; 565 goto err2;
566 566
567#ifdef CONFIG_NET_CLS_ROUTE 567#ifdef CONFIG_IP_ROUTE_CLASSID
568 pde = proc_create("rt_acct", 0, net->proc_net, &rt_acct_proc_fops); 568 pde = proc_create("rt_acct", 0, net->proc_net, &rt_acct_proc_fops);
569 if (!pde) 569 if (!pde)
570 goto err3; 570 goto err3;
571#endif 571#endif
572 return 0; 572 return 0;
573 573
574#ifdef CONFIG_NET_CLS_ROUTE 574#ifdef CONFIG_IP_ROUTE_CLASSID
575err3: 575err3:
576 remove_proc_entry("rt_cache", net->proc_net_stat); 576 remove_proc_entry("rt_cache", net->proc_net_stat);
577#endif 577#endif
@@ -585,7 +585,7 @@ static void __net_exit ip_rt_do_proc_exit(struct net *net)
585{ 585{
586 remove_proc_entry("rt_cache", net->proc_net_stat); 586 remove_proc_entry("rt_cache", net->proc_net_stat);
587 remove_proc_entry("rt_cache", net->proc_net); 587 remove_proc_entry("rt_cache", net->proc_net);
588#ifdef CONFIG_NET_CLS_ROUTE 588#ifdef CONFIG_IP_ROUTE_CLASSID
589 remove_proc_entry("rt_acct", net->proc_net); 589 remove_proc_entry("rt_acct", net->proc_net);
590#endif 590#endif
591} 591}
@@ -1784,7 +1784,7 @@ void ip_rt_get_source(u8 *addr, struct rtable *rt)
1784 memcpy(addr, &src, 4); 1784 memcpy(addr, &src, 4);
1785} 1785}
1786 1786
1787#ifdef CONFIG_NET_CLS_ROUTE 1787#ifdef CONFIG_IP_ROUTE_CLASSID
1788static void set_class_tag(struct rtable *rt, u32 tag) 1788static void set_class_tag(struct rtable *rt, u32 tag)
1789{ 1789{
1790 if (!(rt->dst.tclassid & 0xFFFF)) 1790 if (!(rt->dst.tclassid & 0xFFFF))
@@ -1811,7 +1811,7 @@ static void rt_set_nexthop(struct rtable *rt, struct fib_result *res, u32 itag)
1811 rt->dst.dev->mtu > 576) 1811 rt->dst.dev->mtu > 576)
1812 rt->dst.metrics[RTAX_MTU-1] = 576; 1812 rt->dst.metrics[RTAX_MTU-1] = 576;
1813 } 1813 }
1814#ifdef CONFIG_NET_CLS_ROUTE 1814#ifdef CONFIG_IP_ROUTE_CLASSID
1815 rt->dst.tclassid = FIB_RES_NH(*res).nh_tclassid; 1815 rt->dst.tclassid = FIB_RES_NH(*res).nh_tclassid;
1816#endif 1816#endif
1817 } else 1817 } else
@@ -1827,7 +1827,7 @@ static void rt_set_nexthop(struct rtable *rt, struct fib_result *res, u32 itag)
1827 if (dst_metric(&rt->dst, RTAX_ADVMSS) > 65535 - 40) 1827 if (dst_metric(&rt->dst, RTAX_ADVMSS) > 65535 - 40)
1828 rt->dst.metrics[RTAX_ADVMSS-1] = 65535 - 40; 1828 rt->dst.metrics[RTAX_ADVMSS-1] = 65535 - 40;
1829 1829
1830#ifdef CONFIG_NET_CLS_ROUTE 1830#ifdef CONFIG_IP_ROUTE_CLASSID
1831#ifdef CONFIG_IP_MULTIPLE_TABLES 1831#ifdef CONFIG_IP_MULTIPLE_TABLES
1832 set_class_tag(rt, fib_rules_tclass(res)); 1832 set_class_tag(rt, fib_rules_tclass(res));
1833#endif 1833#endif
@@ -1883,7 +1883,7 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
1883 rth->fl.mark = skb->mark; 1883 rth->fl.mark = skb->mark;
1884 rth->fl.fl4_src = saddr; 1884 rth->fl.fl4_src = saddr;
1885 rth->rt_src = saddr; 1885 rth->rt_src = saddr;
1886#ifdef CONFIG_NET_CLS_ROUTE 1886#ifdef CONFIG_IP_ROUTE_CLASSID
1887 rth->dst.tclassid = itag; 1887 rth->dst.tclassid = itag;
1888#endif 1888#endif
1889 rth->rt_iif = 1889 rth->rt_iif =
@@ -2202,7 +2202,7 @@ local_input:
2202 rth->fl.mark = skb->mark; 2202 rth->fl.mark = skb->mark;
2203 rth->fl.fl4_src = saddr; 2203 rth->fl.fl4_src = saddr;
2204 rth->rt_src = saddr; 2204 rth->rt_src = saddr;
2205#ifdef CONFIG_NET_CLS_ROUTE 2205#ifdef CONFIG_IP_ROUTE_CLASSID
2206 rth->dst.tclassid = itag; 2206 rth->dst.tclassid = itag;
2207#endif 2207#endif
2208 rth->rt_iif = 2208 rth->rt_iif =
@@ -2820,7 +2820,7 @@ static int rt_fill_info(struct net *net,
2820 } 2820 }
2821 if (rt->dst.dev) 2821 if (rt->dst.dev)
2822 NLA_PUT_U32(skb, RTA_OIF, rt->dst.dev->ifindex); 2822 NLA_PUT_U32(skb, RTA_OIF, rt->dst.dev->ifindex);
2823#ifdef CONFIG_NET_CLS_ROUTE 2823#ifdef CONFIG_IP_ROUTE_CLASSID
2824 if (rt->dst.tclassid) 2824 if (rt->dst.tclassid)
2825 NLA_PUT_U32(skb, RTA_FLOW, rt->dst.tclassid); 2825 NLA_PUT_U32(skb, RTA_FLOW, rt->dst.tclassid);
2826#endif 2826#endif
@@ -3245,9 +3245,9 @@ static __net_initdata struct pernet_operations rt_genid_ops = {
3245}; 3245};
3246 3246
3247 3247
3248#ifdef CONFIG_NET_CLS_ROUTE 3248#ifdef CONFIG_IP_ROUTE_CLASSID
3249struct ip_rt_acct __percpu *ip_rt_acct __read_mostly; 3249struct ip_rt_acct __percpu *ip_rt_acct __read_mostly;
3250#endif /* CONFIG_NET_CLS_ROUTE */ 3250#endif /* CONFIG_IP_ROUTE_CLASSID */
3251 3251
3252static __initdata unsigned long rhash_entries; 3252static __initdata unsigned long rhash_entries;
3253static int __init set_rhash_entries(char *str) 3253static int __init set_rhash_entries(char *str)
@@ -3263,7 +3263,7 @@ int __init ip_rt_init(void)
3263{ 3263{
3264 int rc = 0; 3264 int rc = 0;
3265 3265
3266#ifdef CONFIG_NET_CLS_ROUTE 3266#ifdef CONFIG_IP_ROUTE_CLASSID
3267 ip_rt_acct = __alloc_percpu(256 * sizeof(struct ip_rt_acct), __alignof__(struct ip_rt_acct)); 3267 ip_rt_acct = __alloc_percpu(256 * sizeof(struct ip_rt_acct), __alignof__(struct ip_rt_acct));
3268 if (!ip_rt_acct) 3268 if (!ip_rt_acct)
3269 panic("IP: failed to allocate ip_rt_acct\n"); 3269 panic("IP: failed to allocate ip_rt_acct\n");
diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
index 1534f2b44caf..1b79353a5d29 100644
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -886,7 +886,7 @@ config NETFILTER_XT_MATCH_RATEEST
886config NETFILTER_XT_MATCH_REALM 886config NETFILTER_XT_MATCH_REALM
887 tristate '"realm" match support' 887 tristate '"realm" match support'
888 depends on NETFILTER_ADVANCED 888 depends on NETFILTER_ADVANCED
889 select NET_CLS_ROUTE 889 select IP_ROUTE_CLASSID
890 help 890 help
891 This option adds a `realm' match, which allows you to use the realm 891 This option adds a `realm' match, which allows you to use the realm
892 key from the routing subsystem inside iptables. 892 key from the routing subsystem inside iptables.
diff --git a/net/sched/Kconfig b/net/sched/Kconfig
index a36270a994d7..4b753ef70bb7 100644
--- a/net/sched/Kconfig
+++ b/net/sched/Kconfig
@@ -243,7 +243,7 @@ config NET_CLS_TCINDEX
243 243
244config NET_CLS_ROUTE4 244config NET_CLS_ROUTE4
245 tristate "Routing decision (ROUTE)" 245 tristate "Routing decision (ROUTE)"
246 select NET_CLS_ROUTE 246 select IP_ROUTE_CLASSID
247 select NET_CLS 247 select NET_CLS
248 ---help--- 248 ---help---
249 If you say Y here, you will be able to classify packets 249 If you say Y here, you will be able to classify packets
@@ -252,9 +252,6 @@ config NET_CLS_ROUTE4
252 To compile this code as a module, choose M here: the 252 To compile this code as a module, choose M here: the
253 module will be called cls_route. 253 module will be called cls_route.
254 254
255config NET_CLS_ROUTE
256 bool
257
258config NET_CLS_FW 255config NET_CLS_FW
259 tristate "Netfilter mark (FW)" 256 tristate "Netfilter mark (FW)"
260 select NET_CLS 257 select NET_CLS
diff --git a/net/sched/cls_flow.c b/net/sched/cls_flow.c
index 5b271a18bc3a..a3b293d22c66 100644
--- a/net/sched/cls_flow.c
+++ b/net/sched/cls_flow.c
@@ -276,7 +276,7 @@ fallback:
276 276
277static u32 flow_get_rtclassid(const struct sk_buff *skb) 277static u32 flow_get_rtclassid(const struct sk_buff *skb)
278{ 278{
279#ifdef CONFIG_NET_CLS_ROUTE 279#ifdef CONFIG_IP_ROUTE_CLASSID
280 if (skb_dst(skb)) 280 if (skb_dst(skb))
281 return skb_dst(skb)->tclassid; 281 return skb_dst(skb)->tclassid;
282#endif 282#endif
diff --git a/net/sched/em_meta.c b/net/sched/em_meta.c
index 34da5e29ea1a..0d66e58f26d8 100644
--- a/net/sched/em_meta.c
+++ b/net/sched/em_meta.c
@@ -255,7 +255,7 @@ META_COLLECTOR(int_rtclassid)
255 if (unlikely(skb_dst(skb) == NULL)) 255 if (unlikely(skb_dst(skb) == NULL))
256 *err = -1; 256 *err = -1;
257 else 257 else
258#ifdef CONFIG_NET_CLS_ROUTE 258#ifdef CONFIG_IP_ROUTE_CLASSID
259 dst->value = skb_dst(skb)->tclassid; 259 dst->value = skb_dst(skb)->tclassid;
260#else 260#else
261 dst->value = 0; 261 dst->value = 0;