XT_MATCH_REALM Kconfig whinge...
Subsystems (5)
I think I posted about this a long ways back, still seeing it in yesterday's linux-next:
scripts/kconfig/conf --silentoldconfig Kconfig
warning: (NETFILTER_XT_MATCH_REALM) selects NET_CLS_ROUTE which has unmet direct dependencies (NET && NET_SCHED)
warning: (NETFILTER_XT_MATCH_REALM) selects NET_CLS_ROUTE which has unmet direct dependencies (NET && NET_SCHED)
(NET is of course set, NET_SCHED isn't).
Pablo Neira Ayuso
maintainerQuoted 3 lines · On 12/01/11 20:15, [email protected] wrote:
scripts/kconfig/conf--silentoldconfigKconfig
warning: (NETFILTER_XT_MATCH_REALM) selectsNET_CLS_ROUTEwhich has unmet direct dependencies (NET &&NET_SCHED)
warning: (NETFILTER_XT_MATCH_REALM) selectsNET_CLS_ROUTEwhich has unmet direct dependencies (NET &&NET_SCHED)
Does this fix your problem?
netfilter: xt_realm: fix unmet direct dependencies
scripts/kconfig/conf --silentoldconfig Kconfig
warning: (NETFILTER_XT_MATCH_REALM) selects NET_CLS_ROUTE which has unmet direct dependencies (NET && NET_SCHED)
warning: (NETFILTER_XT_MATCH_REALM) selects NET_CLS_ROUTE which has unmet direct dependencies (NET && NET_SCHED)
Reported by: Valdis Kletnieks <[email protected]>
net/netfilter/Kconfig +2 -1
@@ -886,7 +886,8 @@ config NETFILTER_XT_MATCH_RATEEST config NETFILTER_XT_MATCH_REALM tristate '"realm" match support' depends on NETFILTER_ADVANCED - select NET_CLS_ROUTE + depends on NET_SCHED + depends on NET_CLS_ROUTE help This option adds a `realm' match, which allows you to use the realm key from the routing subsystem inside iptables.
Quoted 7 lines · Pablo Neira Ayuso
Quoted 3 lines · On 12/01/11 20:15, [email protected] wrote:
scripts/kconfig/conf--silentoldconfigKconfig
warning: (NETFILTER_XT_MATCH_REALM) selectsNET_CLS_ROUTEwhich has unmet direct dependencies (NET &&NET_SCHED)
warning: (NETFILTER_XT_MATCH_REALM) selectsNET_CLS_ROUTEwhich has unmet direct dependencies (NET &&NET_SCHED)Does this fix your problem?
net/netfilter/Kconfig +2 -1
@@ -886,7 +886,8 @@ config NETFILTER_XT_MATCH_RATEEST config NETFILTER_XT_MATCH_REALM tristate '"realm" match support' depends on NETFILTER_ADVANCED - select NET_CLS_ROUTE + depends on NET_SCHED + depends on NET_CLS_ROUTE help This option adds a `realm' match, which allows you to use the realm key from the routing subsystem inside iptables.
This patch is not right. The select should just be removed, because xt_realm is useful even without SCHED and CLS_ROUTE.
Pablo Neira Ayuso
maintainerQuoted 26 lines · Jan Engelhardt
Quoted 7 lines · Pablo Neira Ayuso
Quoted 3 lines · On 12/01/11 20:15, [email protected] wrote:
scripts/kconfig/conf--silentoldconfigKconfig
warning: (NETFILTER_XT_MATCH_REALM) selectsNET_CLS_ROUTEwhich has unmet direct dependencies (NET &&NET_SCHED)
warning: (NETFILTER_XT_MATCH_REALM) selectsNET_CLS_ROUTEwhich has unmet direct dependencies (NET &&NET_SCHED)Does this fix your problem?
net/netfilter/Kconfig +2
-1@@ -886,7 +886,8 @@ config NETFILTER_XT_MATCH_RATEEST config NETFILTER_XT_MATCH_REALM tristate '"realm" match support' depends on NETFILTER_ADVANCED - select NET_CLS_ROUTE + depends on NET_SCHED + depends on NET_CLS_ROUTE help This option adds a `realm' match, which allows you to use the realm key from the routing subsystem inside iptables.
Quoted 2 lines
This patch is not right. The select should just be removed, because
xt_realmis useful even without SCHED andCLS_ROUTE.
I wonder why NET_CLS_ROUTE has been there as dependency.
Then this patch should be fine.
netfilter: xt_realm: fix unmet direct dependencies
From: Pablo Neira Ayuso <[email protected]>
scripts/kconfig/conf --silentoldconfig Kconfig
warning: (NETFILTER_XT_MATCH_REALM) selects NET_CLS_ROUTE which has unmet direct dependencies (NET && NET_SCHED)
warning: (NETFILTER_XT_MATCH_REALM) selects NET_CLS_ROUTE which has unmet direct dependencies (NET && NET_SCHED)
Jan Engelhardt spotted that NET_CLS_ROUTE is a superfluous dependency, for that reason, this patch remove it.
Reported by: Valdis Kletnieks <[email protected]>
--- net/netfilter/Kconfig | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
net/netfilter/Kconfig +0 -1
@@ -886,7 +886,6 @@ config NETFILTER_XT_MATCH_RATEEST config NETFILTER_XT_MATCH_REALM tristate '"realm" match support' depends on NETFILTER_ADVANCED - select NET_CLS_ROUTE help This option adds a `realm' match, which allows you to use the realm key from the routing subsystem inside iptables.
Quoted 27 lines · Pablo Neira Ayuso
Quoted 26 lines · Jan Engelhardt
Quoted 7 lines · Pablo Neira Ayuso
Quoted 3 lines · On 12/01/11 20:15, [email protected] wrote:
scripts/kconfig/conf--silentoldconfigKconfig
warning: (NETFILTER_XT_MATCH_REALM) selectsNET_CLS_ROUTEwhich has unmet direct dependencies (NET &&NET_SCHED)
warning: (NETFILTER_XT_MATCH_REALM) selectsNET_CLS_ROUTEwhich has unmet direct dependencies (NET &&NET_SCHED)Does this fix your problem?
net/netfilter/Kconfig +2
-1@@ -886,7 +886,8 @@ config NETFILTER_XT_MATCH_RATEEST config NETFILTER_XT_MATCH_REALM tristate '"realm" match support' depends on NETFILTER_ADVANCED - select NET_CLS_ROUTE + depends on NET_SCHED + depends on NET_CLS_ROUTE help This option adds a `realm' match, which allows you to use the realm key from the routing subsystem inside iptables.
Quoted 6 lines
Quoted 2 lines
This patch is not right. The select should just be removed, because
xt_realmis useful even without SCHED andCLS_ROUTE.I wonder why
NET_CLS_ROUTEhas been there as dependency.Then this patch should be fine.
This doesn't look correct to me. NET_CLS_ROUTE guards the tclassid member of struct dst_entry, which is used by the realm match.
I have a patch to use a seperate define for the tclassid member and have realm and cls_route select that. I'll add that one to my tree after testing whether it still builds.
commit f6ce9a8f0a591865534f1fdd78848c328e36f08d
Author: Patrick McHardy <[email protected]> Date: Fri Oct 29 19:09:49 2010 +0200
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.
include/net/dst.h +1 -1
@@ -72,7 +72,7 @@ struct dst_entry {u32 metrics[RTAX_MAX ]; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID __u32 tclassid;#else __u32 __pad2;
include/net/ip_fib.h +3 -3
@@ -55,7 +55,7 @@ struct fib_nh {int nh_weight;int nh_power;#endif -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID __u32 nh_tclassid;#endif int nh_oif;
@@ -199,7 +199,7 @@ static inline int fib_lookup(struct net *net, const struct flowi *flp,extern int __net_init fib4_rules_init (struct net *net); extern void __net_exit fib4_rules_exit(struct net *net); -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID extern u32 fib_rules_tclass (struct fib_result *res);#endif
@@ -233,7 +233,7 @@ extern struct fib_table *fib_hash_table(u32 id);static inline void fib_combine_itag (u32 *itag,struct fib_result *res) { -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID #ifdef CONFIG_IP_MULTIPLE_TABLES u32 rtag;#endif
net/ipv4/Kconfig +3 -1
@@ -140,6 +140,9 @@ config IP_ROUTE_VERBOSE handled by the klogd daemon which is responsible for kernel messages ("man klogd"). +config IP_ROUTE_CLASSID + bool + config IP_PNP bool "IP: kernel level autoconfiguration" help
@@ -655,4 +658,3 @@ config TCP_MD5SIG on the Internet. If unsure, say N. -
net/ipv4/fib_rules.c +5 -5
@@ -41,12 +41,12 @@ struct fib4_rule {__be32 srcmask;__be32 dst;__be32 dstmask; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID u32 tclassid;#endif }; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID u32 fib_rules_tclass (struct fib_result *res) {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,if (frh->dst_len) rule4->dst =nla_get_be32 (tb[FRA_DST ]); -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID if (tb[FRA_FLOW ]) rule4->tclassid =nla_get_u32 (tb[FRA_FLOW ]);#endif
@@ -195,7 +195,7 @@ static int fib4_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh,if (frh->tos && (rule4->tos != frh->tos))return 0 ; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID if (tb[FRA_FLOW ] && (rule4->tclassid !=nla_get_u32 (tb[FRA_FLOW ])))return 0 ;#endif
@@ -224,7 +224,7 @@ static int fib4_rule_fill(struct fib_rule *rule, struct sk_buff *skb,if (rule4->src_len)NLA_PUT_BE32 (skb,FRA_SRC , rule4->src); -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID if (rule4->tclassid)NLA_PUT_U32 (skb,FRA_FLOW , rule4->tclassid);#endif
net/ipv4/fib_semantics.c +7 -7
@@ -200,7 +200,7 @@ static inline int nh_comp(const struct fib_info *fi, const struct fib_info *ofi)#ifdef CONFIG_IP_ROUTE_MULTIPATH nh->nh_weight != onh->nh_weight ||#endif -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID nh->nh_tclassid != onh->nh_tclassid || #endif ((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, nla =nla_find (attrs, attrlen,RTA_GATEWAY ); nexthop_nh->nh_gw = nla ?nla_get_be32 (nla) :0 ; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID nla =nla_find (attrs, attrlen,RTA_FLOW ); nexthop_nh->nh_tclassid = nla ?nla_get_u32 (nla) :0 ;#endif
@@ -476,7 +476,7 @@ int fib_nh_match(struct fib_config *cfg, struct fib_info *fi) nla =nla_find (attrs, attrlen,RTA_GATEWAY );if (nla &&nla_get_be32 (nla) != nh->nh_gw)return 1 ; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID nla =nla_find (attrs, attrlen,RTA_FLOW );if (nla &&nla_get_u32 (nla) != nh->nh_tclassid)return 1 ;
@@ -783,7 +783,7 @@ struct fib_info *fib_create_info(struct fib_config *cfg) goto err_inval;if (cfg->fc_gw && fi->fib_nh->nh_gw != cfg->fc_gw) goto err_inval; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID if (cfg->fc_flow && fi->fib_nh->nh_tclassid != cfg->fc_flow) goto err_inval;#endif
@@ -796,7 +796,7 @@ struct fib_info *fib_create_info(struct fib_config *cfg) nh->nh_oif = cfg->fc_oif; nh->nh_gw = cfg->fc_gw; nh->nh_flags = cfg->fc_flags; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID nh->nh_tclassid = cfg->fc_flow;#endif #ifdef CONFIG_IP_ROUTE_MULTIPATH
@@ -1006,7 +1006,7 @@ int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,if (fi->fib_nh->nh_oif)NLA_PUT_U32 (skb,RTA_OIF , fi->fib_nh->nh_oif); -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID if (fi->fib_nh[0 ].nh_tclassid)NLA_PUT_U32 (skb,RTA_FLOW , fi->fib_nh[0 ].nh_tclassid);#endif
@@ -1031,7 +1031,7 @@ int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,if (nh->nh_gw)NLA_PUT_BE32 (skb,RTA_GATEWAY , nh->nh_gw); -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID if (nh->nh_tclassid)NLA_PUT_U32 (skb,RTA_FLOW , nh->nh_tclassid);#endif
net/ipv4/ip_input.c +1 -1
@@ -340,7 +340,7 @@ static int ip_rcv_finish(struct sk_buff *skb) } } -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID if (unlikely (skb_dst (skb)->tclassid)) {struct ip_rt_acct *st =this_cpu_ptr (ip_rt_acct);u32 idx =skb_dst (skb)->tclassid;
net/ipv4/route.c +13 -13
@@ -509,7 +509,7 @@ static const struct file_operations rt_cpu_seq_fops = { .release = seq_release, }; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID static int rt_acct_proc_show (struct seq_file *m,void *v) {struct ip_rt_acct *dst, *src;
@@ -562,14 +562,14 @@ static int __net_init ip_rt_do_proc_init(struct net *net)if (!pde) goto err2; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID pde =proc_create ("rt_acct" ,0 , net->proc_net, &rt_acct_proc_fops);if (!pde) goto err3;#endif return 0 ; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID err3:remove_proc_entry ("rt_cache" , net->proc_net_stat);#endif
@@ -583,7 +583,7 @@ static void __net_exit ip_rt_do_proc_exit(struct net *net) {remove_proc_entry ("rt_cache" , net->proc_net_stat);remove_proc_entry ("rt_cache" , net->proc_net); -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID remove_proc_entry ("rt_acct" , net->proc_net);#endif }
@@ -1804,7 +1804,7 @@ void ip_rt_get_source(u8 *addr, struct rtable *rt)memcpy (addr, &src,4 ); } -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID static void set_class_tag (struct rtable *rt,u32 tag) {if (!(rt->dst.tclassid &0xFFFF ))
@@ -1831,7 +1831,7 @@ static void rt_set_nexthop(struct rtable *rt, struct fib_result *res, u32 itag) rt->dst.dev->mtu > 576) rt->dst.metrics[RTAX_MTU -1 ] =576 ; } -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID rt->dst.tclassid =FIB_RES_NH (*res).nh_tclassid;#endif }else
@@ -1847,7 +1847,7 @@ static void rt_set_nexthop(struct rtable *rt, struct fib_result *res, u32 itag)if (dst_metric (&rt->dst,RTAX_ADVMSS ) >65535 -40 ) rt->dst.metrics[RTAX_ADVMSS -1 ] =65535 -40 ; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID #ifdef CONFIG_IP_MULTIPLE_TABLES set_class_tag (rt,fib_rules_tclass (res));#endif
@@ -1903,7 +1903,7 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr, rth->fl.mark = skb->mark; rth->fl.fl4_src = saddr; rth->rt_src = saddr; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID rth->dst.tclassid = itag;#endif rth->rt_iif =
@@ -2224,7 +2224,7 @@ local_input: rth->fl.mark = skb->mark; rth->fl.fl4_src = saddr; rth->rt_src = saddr; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID rth->dst.tclassid = itag;#endif rth->rt_iif =
@@ -2849,7 +2849,7 @@ static int rt_fill_info(struct net *net, }if (rt->dst.dev)NLA_PUT_U32 (skb,RTA_OIF , rt->dst.dev->ifindex); -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID if (rt->dst.tclassid)NLA_PUT_U32 (skb,RTA_FLOW , rt->dst.tclassid);#endif
@@ -3274,9 +3274,9 @@ static __net_initdata struct pernet_operations rt_genid_ops = { }; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID struct ip_rt_acct __percpu *ip_rt_acct__read_mostly ; -#endif /* CONFIG_NET_CLS_ROUTE */ +#endif /* CONFIG_IP_ROUTE_CLASSID */ static __initdata unsigned long rhash_entries;static int __init set_rhash_entries (char *str)
@@ -3292,7 +3292,7 @@ int __init ip_rt_init(void) {int rc =0 ; -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID ip_rt_acct =__alloc_percpu (256 *sizeof (struct ip_rt_acct ), __alignof__(struct ip_rt_acct ));if (!ip_rt_acct)panic ("IP: failed to allocate ip_rt_acct\n" );
net/netfilter/Kconfig +1 -1
@@ -886,7 +886,7 @@ config NETFILTER_XT_MATCH_RATEEST config NETFILTER_XT_MATCH_REALM tristate '"realm" match support' depends on NETFILTER_ADVANCED - select NET_CLS_ROUTE + select IP_ROUTE_CLASSID help This option adds a `realm' match, which allows you to use the realm key from the routing subsystem inside iptables.
net/sched/Kconfig +1 -4
@@ -243,7 +243,7 @@ config NET_CLS_TCINDEX config NET_CLS_ROUTE4 tristate "Routing decision (ROUTE)" - select NET_CLS_ROUTE + select IP_ROUTE_CLASSID select NET_CLS ---help--- If you say Y here, you will be able to classify packets
@@ -252,9 +252,6 @@ config NET_CLS_ROUTE4 To compile this code as a module, choose M here: the module will be called cls_route. -config NET_CLS_ROUTE - bool - config NET_CLS_FW tristate "Netfilter mark (FW)" select NET_CLS
net/sched/cls_flow.c +1 -1
@@ -276,7 +276,7 @@ fallback:static u32 flow_get_rtclassid (const struct sk_buff *skb) { -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID if (skb_dst (skb))return skb_dst (skb)->tclassid;#endif
net/sched/em_meta.c +1 -1
@@ -255,7 +255,7 @@ META_COLLECTOR(int_rtclassid)if (unlikely (skb_dst (skb) ==NULL )) *err =-1 ; else -#ifdef CONFIG_NET_CLS_ROUTE +#ifdef CONFIG_IP_ROUTE_CLASSID dst->value =skb_dst (skb)->tclassid;#else dst->value =0 ;