Skip to content

Commit cb2833e

Browse files
Florian Westphalummakynes
authored andcommitted
netfilter: conntrack: merge ecache and timestamp sysctl tables with main one
Similar to previous change, this time for eache and timestamp. Unlike helper and acct, these can be disabled at build time, so they need ifdef guards. Next patch will remove a few (now obsolete) functions. Signed-off-by: Florian Westphal <[email protected]> Signed-off-by: Pablo Neira Ayuso <[email protected]>
1 parent d912dec commit cb2833e

File tree

3 files changed

+35
-128
lines changed

3 files changed

+35
-128
lines changed

net/netfilter/nf_conntrack_ecache.c

Lines changed: 1 addition & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -336,85 +336,22 @@ EXPORT_SYMBOL_GPL(nf_ct_expect_unregister_notifier);
336336
#define NF_CT_EVENTS_DEFAULT 1
337337
static int nf_ct_events __read_mostly = NF_CT_EVENTS_DEFAULT;
338338

339-
#ifdef CONFIG_SYSCTL
340-
static struct ctl_table event_sysctl_table[] = {
341-
{
342-
.procname = "nf_conntrack_events",
343-
.data = &init_net.ct.sysctl_events,
344-
.maxlen = sizeof(unsigned int),
345-
.mode = 0644,
346-
.proc_handler = proc_dointvec,
347-
},
348-
{}
349-
};
350-
#endif /* CONFIG_SYSCTL */
351-
352339
static const struct nf_ct_ext_type event_extend = {
353340
.len = sizeof(struct nf_conntrack_ecache),
354341
.align = __alignof__(struct nf_conntrack_ecache),
355342
.id = NF_CT_EXT_ECACHE,
356343
};
357344

358-
#ifdef CONFIG_SYSCTL
359-
static int nf_conntrack_event_init_sysctl(struct net *net)
360-
{
361-
struct ctl_table *table;
362-
363-
table = kmemdup(event_sysctl_table, sizeof(event_sysctl_table),
364-
GFP_KERNEL);
365-
if (!table)
366-
goto out;
367-
368-
table[0].data = &net->ct.sysctl_events;
369-
370-
/* Don't export sysctls to unprivileged users */
371-
if (net->user_ns != &init_user_ns)
372-
table[0].procname = NULL;
373-
374-
net->ct.event_sysctl_header =
375-
register_net_sysctl(net, "net/netfilter", table);
376-
if (!net->ct.event_sysctl_header) {
377-
pr_err("can't register to sysctl\n");
378-
goto out_register;
379-
}
380-
return 0;
381-
382-
out_register:
383-
kfree(table);
384-
out:
385-
return -ENOMEM;
386-
}
387-
388-
static void nf_conntrack_event_fini_sysctl(struct net *net)
389-
{
390-
struct ctl_table *table;
391-
392-
table = net->ct.event_sysctl_header->ctl_table_arg;
393-
unregister_net_sysctl_table(net->ct.event_sysctl_header);
394-
kfree(table);
395-
}
396-
#else
397-
static int nf_conntrack_event_init_sysctl(struct net *net)
398-
{
399-
return 0;
400-
}
401-
402-
static void nf_conntrack_event_fini_sysctl(struct net *net)
403-
{
404-
}
405-
#endif /* CONFIG_SYSCTL */
406-
407345
int nf_conntrack_ecache_pernet_init(struct net *net)
408346
{
409347
net->ct.sysctl_events = nf_ct_events;
410348
INIT_DELAYED_WORK(&net->ct.ecache_dwork, ecache_work);
411-
return nf_conntrack_event_init_sysctl(net);
349+
return 0;
412350
}
413351

414352
void nf_conntrack_ecache_pernet_fini(struct net *net)
415353
{
416354
cancel_delayed_work_sync(&net->ct.ecache_dwork);
417-
nf_conntrack_event_fini_sysctl(net);
418355
}
419356

420357
int nf_conntrack_ecache_init(void)

net/netfilter/nf_conntrack_standalone.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,12 @@ enum nf_ct_sysctl_index {
541541
NF_SYSCTL_CT_EXPECT_MAX,
542542
NF_SYSCTL_CT_ACCT,
543543
NF_SYSCTL_CT_HELPER,
544+
#ifdef CONFIG_NF_CONNTRACK_EVENTS
545+
NF_SYSCTL_CT_EVENTS,
546+
#endif
547+
#ifdef CONFIG_NF_CONNTRACK_TIMESTAMP
548+
NF_SYSCTL_CT_TIMESTAMP,
549+
#endif
544550
};
545551

546552
static struct ctl_table nf_ct_sysctl_table[] = {
@@ -602,6 +608,24 @@ static struct ctl_table nf_ct_sysctl_table[] = {
602608
.mode = 0644,
603609
.proc_handler = proc_dointvec,
604610
},
611+
#ifdef CONFIG_NF_CONNTRACK_EVENTS
612+
[NF_SYSCTL_CT_EVENTS] = {
613+
.procname = "nf_conntrack_events",
614+
.data = &init_net.ct.sysctl_events,
615+
.maxlen = sizeof(unsigned int),
616+
.mode = 0644,
617+
.proc_handler = proc_dointvec,
618+
},
619+
#endif
620+
#ifdef CONFIG_NF_CONNTRACK_TIMESTAMP
621+
[NF_SYSCTL_CT_TIMESTAMP] = {
622+
.procname = "nf_conntrack_timestamp",
623+
.data = &init_net.ct.sysctl_tstamp,
624+
.maxlen = sizeof(unsigned int),
625+
.mode = 0644,
626+
.proc_handler = proc_dointvec,
627+
},
628+
#endif
605629
{ }
606630
};
607631

@@ -628,12 +652,21 @@ static int nf_conntrack_standalone_init_sysctl(struct net *net)
628652
table[NF_SYSCTL_CT_COUNT].data = &net->ct.count;
629653
table[NF_SYSCTL_CT_CHECKSUM].data = &net->ct.sysctl_checksum;
630654
table[NF_SYSCTL_CT_LOG_INVALID].data = &net->ct.sysctl_log_invalid;
655+
#ifdef CONFIG_NF_CONNTRACK_EVENTS
656+
table[NF_SYSCTL_CT_EVENTS].data = &net->ct.sysctl_events;
657+
#endif
631658

632659
/* Don't export sysctls to unprivileged users */
633660
if (net->user_ns != &init_user_ns) {
634661
table[NF_SYSCTL_CT_MAX].procname = NULL;
635662
table[NF_SYSCTL_CT_ACCT].procname = NULL;
636663
table[NF_SYSCTL_CT_HELPER].procname = NULL;
664+
#ifdef CONFIG_NF_CONNTRACK_TIMESTAMP
665+
table[NF_SYSCTL_CT_TIMESTAMP].procname = NULL;
666+
#endif
667+
#ifdef CONFIG_NF_CONNTRACK_EVENTS
668+
table[NF_SYSCTL_CT_EVENTS].procname = NULL;
669+
#endif
637670
}
638671

639672
if (!net_eq(&init_net, net))

net/netfilter/nf_conntrack_timestamp.c

Lines changed: 1 addition & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -22,83 +22,20 @@ static bool nf_ct_tstamp __read_mostly;
2222
module_param_named(tstamp, nf_ct_tstamp, bool, 0644);
2323
MODULE_PARM_DESC(tstamp, "Enable connection tracking flow timestamping.");
2424

25-
#ifdef CONFIG_SYSCTL
26-
static struct ctl_table tstamp_sysctl_table[] = {
27-
{
28-
.procname = "nf_conntrack_timestamp",
29-
.data = &init_net.ct.sysctl_tstamp,
30-
.maxlen = sizeof(unsigned int),
31-
.mode = 0644,
32-
.proc_handler = proc_dointvec,
33-
},
34-
{}
35-
};
36-
#endif /* CONFIG_SYSCTL */
37-
3825
static const struct nf_ct_ext_type tstamp_extend = {
3926
.len = sizeof(struct nf_conn_tstamp),
4027
.align = __alignof__(struct nf_conn_tstamp),
4128
.id = NF_CT_EXT_TSTAMP,
4229
};
4330

44-
#ifdef CONFIG_SYSCTL
45-
static int nf_conntrack_tstamp_init_sysctl(struct net *net)
46-
{
47-
struct ctl_table *table;
48-
49-
table = kmemdup(tstamp_sysctl_table, sizeof(tstamp_sysctl_table),
50-
GFP_KERNEL);
51-
if (!table)
52-
goto out;
53-
54-
table[0].data = &net->ct.sysctl_tstamp;
55-
56-
/* Don't export sysctls to unprivileged users */
57-
if (net->user_ns != &init_user_ns)
58-
table[0].procname = NULL;
59-
60-
net->ct.tstamp_sysctl_header = register_net_sysctl(net, "net/netfilter",
61-
table);
62-
if (!net->ct.tstamp_sysctl_header) {
63-
pr_err("can't register to sysctl\n");
64-
goto out_register;
65-
}
66-
return 0;
67-
68-
out_register:
69-
kfree(table);
70-
out:
71-
return -ENOMEM;
72-
}
73-
74-
static void nf_conntrack_tstamp_fini_sysctl(struct net *net)
75-
{
76-
struct ctl_table *table;
77-
78-
table = net->ct.tstamp_sysctl_header->ctl_table_arg;
79-
unregister_net_sysctl_table(net->ct.tstamp_sysctl_header);
80-
kfree(table);
81-
}
82-
#else
83-
static int nf_conntrack_tstamp_init_sysctl(struct net *net)
84-
{
85-
return 0;
86-
}
87-
88-
static void nf_conntrack_tstamp_fini_sysctl(struct net *net)
89-
{
90-
}
91-
#endif
92-
9331
int nf_conntrack_tstamp_pernet_init(struct net *net)
9432
{
9533
net->ct.sysctl_tstamp = nf_ct_tstamp;
96-
return nf_conntrack_tstamp_init_sysctl(net);
34+
return 0;
9735
}
9836

9937
void nf_conntrack_tstamp_pernet_fini(struct net *net)
10038
{
101-
nf_conntrack_tstamp_fini_sysctl(net);
10239
}
10340

10441
int nf_conntrack_tstamp_init(void)

0 commit comments

Comments
 (0)