ipv4: sysctl fixes

net.ipv4.neigh should be a part of skeleton to avoid ordering problems

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by Al Viro and committed by David S. Miller 2f4520d3 30c2235c

+22 -6
+22 -6
net/ipv4/route.c
··· 3116 3116 { .ctl_name = 0 } 3117 3117 }; 3118 3118 3119 - static __net_initdata struct ctl_path ipv4_route_path[] = { 3120 - { .procname = "net", .ctl_name = CTL_NET, }, 3121 - { .procname = "ipv4", .ctl_name = NET_IPV4, }, 3122 - { .procname = "route", .ctl_name = NET_IPV4_ROUTE, }, 3123 - { }, 3119 + static struct ctl_table empty[1]; 3120 + 3121 + static struct ctl_table ipv4_skeleton[] = 3122 + { 3123 + { .procname = "route", .ctl_name = NET_IPV4_ROUTE, 3124 + .child = ipv4_route_table}, 3125 + { .procname = "neigh", .ctl_name = NET_IPV4_NEIGH, 3126 + .child = empty}, 3127 + { } 3124 3128 }; 3125 3129 3130 + static __net_initdata struct ctl_path ipv4_path[] = { 3131 + { .procname = "net", .ctl_name = CTL_NET, }, 3132 + { .procname = "ipv4", .ctl_name = NET_IPV4, }, 3133 + { }, 3134 + }; 3126 3135 3127 3136 static struct ctl_table ipv4_route_flush_table[] = { 3128 3137 { ··· 3143 3134 .strategy = &ipv4_sysctl_rtcache_flush_strategy, 3144 3135 }, 3145 3136 { .ctl_name = 0 }, 3137 + }; 3138 + 3139 + static __net_initdata struct ctl_path ipv4_route_path[] = { 3140 + { .procname = "net", .ctl_name = CTL_NET, }, 3141 + { .procname = "ipv4", .ctl_name = NET_IPV4, }, 3142 + { .procname = "route", .ctl_name = NET_IPV4_ROUTE, }, 3143 + { }, 3146 3144 }; 3147 3145 3148 3146 static __net_init int sysctl_route_net_init(struct net *net) ··· 3303 3287 */ 3304 3288 void __init ip_static_sysctl_init(void) 3305 3289 { 3306 - register_sysctl_paths(ipv4_route_path, ipv4_route_table); 3290 + register_sysctl_paths(ipv4_path, ipv4_skeleton); 3307 3291 } 3308 3292 #endif 3309 3293