Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 106469
b: refs/heads/master
c: eeb61f7
h: refs/heads/master
i:
  106467: 03b7f2a
v: v3
  • Loading branch information
Al Viro authored and Linus Torvalds committed Jul 27, 2008
1 parent 7459459 commit 5b5ced0
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 19 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: bfbcf034798b2ca45338cee5049b5694b7ddc865
refs/heads/master: eeb61f719c00c626115852bbc91189dc3011a844
2 changes: 2 additions & 0 deletions trunk/include/net/ipv6.h
Original file line number Diff line number Diff line change
Expand Up @@ -608,6 +608,8 @@ extern struct ctl_table *ipv6_icmp_sysctl_init(struct net *net);
extern struct ctl_table *ipv6_route_sysctl_init(struct net *net);
extern int ipv6_sysctl_register(void);
extern void ipv6_sysctl_unregister(void);
extern int ipv6_static_sysctl_register(void);
extern void ipv6_static_sysctl_unregister(void);
#endif

#endif /* __KERNEL__ */
Expand Down
2 changes: 0 additions & 2 deletions trunk/include/net/route.h
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,4 @@ static inline struct inet_peer *rt_get_peer(struct rtable *rt)
return rt->peer;
}

extern ctl_table ipv4_route_table[];

#endif /* _ROUTE_H */
11 changes: 10 additions & 1 deletion trunk/net/ipv4/route.c
Original file line number Diff line number Diff line change
Expand Up @@ -2914,7 +2914,7 @@ static int ipv4_sysctl_rtcache_flush_strategy(ctl_table *table,
return 0;
}

ctl_table ipv4_route_table[] = {
static ctl_table ipv4_route_table[] = {
{
.ctl_name = NET_IPV4_ROUTE_GC_THRESH,
.procname = "gc_thresh",
Expand Down Expand Up @@ -3216,6 +3216,15 @@ int __init ip_rt_init(void)
return rc;
}

/*
* We really need to sanitize the damn ipv4 init order, then all
* this nonsense will go away.
*/
void __init ip_static_sysctl_init(void)
{
register_sysctl_paths(ipv4_route_path, ipv4_route_table);
}

EXPORT_SYMBOL(__ip_select_ident);
EXPORT_SYMBOL(ip_route_input);
EXPORT_SYMBOL(ip_route_output_key);
14 changes: 0 additions & 14 deletions trunk/net/ipv4/sysctl_net_ipv4.c
Original file line number Diff line number Diff line change
Expand Up @@ -401,13 +401,6 @@ static struct ctl_table ipv4_table[] = {
.proc_handler = &ipv4_local_port_range,
.strategy = &ipv4_sysctl_local_port_range,
},
{
.ctl_name = NET_IPV4_ROUTE,
.procname = "route",
.maxlen = 0,
.mode = 0555,
.child = ipv4_route_table
},
#ifdef CONFIG_IP_MULTICAST
{
.ctl_name = NET_IPV4_IGMP_MAX_MEMBERSHIPS,
Expand Down Expand Up @@ -882,11 +875,4 @@ static __init int sysctl_ipv4_init(void)
return 0;
}

/* set enough of tree skeleton to get rid of ordering problems */
void __init ip_static_sysctl_init(void)
{
static ctl_table table[1];
register_sysctl_paths(net_ipv4_ctl_path, table);
}

__initcall(sysctl_ipv4_init);
12 changes: 12 additions & 0 deletions trunk/net/ipv6/af_inet6.c
Original file line number Diff line number Diff line change
Expand Up @@ -934,6 +934,11 @@ static int __init inet6_init(void)
if (err)
goto out_unregister_sock;

#ifdef CONFIG_SYSCTL
err = ipv6_static_sysctl_register();
if (err)
goto static_sysctl_fail;
#endif
/*
* ipngwg API draft makes clear that the correct semantics
* for TCP and UDP is to consider one TCP and UDP instance
Expand Down Expand Up @@ -1058,6 +1063,10 @@ static int __init inet6_init(void)
icmp_fail:
unregister_pernet_subsys(&inet6_net_ops);
register_pernet_fail:
#ifdef CONFIG_SYSCTL
ipv6_static_sysctl_unregister();
static_sysctl_fail:
#endif
cleanup_ipv6_mibs();
out_unregister_sock:
sock_unregister(PF_INET6);
Expand Down Expand Up @@ -1113,6 +1122,9 @@ static void __exit inet6_exit(void)
rawv6_exit();

unregister_pernet_subsys(&inet6_net_ops);
#ifdef CONFIG_SYSCTL
ipv6_static_sysctl_unregister();
#endif
cleanup_ipv6_mibs();
proto_unregister(&rawv6_prot);
proto_unregister(&udplitev6_prot);
Expand Down
16 changes: 16 additions & 0 deletions trunk/net/ipv6/sysctl_net_ipv6.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,3 +150,19 @@ void ipv6_sysctl_unregister(void)
unregister_net_sysctl_table(ip6_header);
unregister_pernet_subsys(&ipv6_sysctl_net_ops);
}

static struct ctl_table_header *ip6_base;

int ipv6_static_sysctl_register(void)
{
static struct ctl_table empty[1];
ip6_base = register_net_sysctl_rotable(net_ipv6_ctl_path, empty);
if (ip6_base == NULL)
return -ENOMEM;
return 0;
}

void ipv6_static_sysctl_unregister(void)
{
unregister_net_sysctl_table(ip6_base);
}
4 changes: 3 additions & 1 deletion trunk/net/sysctl_net.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,9 @@ static struct ctl_table_root net_sysctl_ro_root = {

static int sysctl_net_init(struct net *net)
{
setup_sysctl_set(&net->sysctls, NULL, is_seen);
setup_sysctl_set(&net->sysctls,
&net_sysctl_ro_root.default_set,
is_seen);
return 0;
}

Expand Down

0 comments on commit 5b5ced0

Please sign in to comment.