73
73
74
74
#define CLONE_OFFLINK_ROUTE 0
75
75
76
- static int ip6_rt_max_size = 4096 ;
77
- static int ip6_rt_gc_min_interval = HZ / 2 ;
78
- static int ip6_rt_gc_timeout = 60 * HZ ;
79
- int ip6_rt_gc_interval = 30 * HZ ;
80
- static int ip6_rt_gc_elasticity = 9 ;
81
- static int ip6_rt_mtu_expires = 10 * 60 * HZ ;
82
- static int ip6_rt_min_advmss = IPV6_MIN_MTU - 20 - 40 ;
83
-
84
76
static struct rt6_info * ip6_rt_copy (struct rt6_info * ort );
85
77
static struct dst_entry * ip6_dst_check (struct dst_entry * dst , u32 cookie );
86
78
static struct dst_entry * ip6_negative_advice (struct dst_entry * );
@@ -894,8 +886,8 @@ static inline unsigned int ipv6_advmss(unsigned int mtu)
894
886
{
895
887
mtu -= sizeof (struct ipv6hdr ) + sizeof (struct tcphdr );
896
888
897
- if (mtu < ip6_rt_min_advmss )
898
- mtu = ip6_rt_min_advmss ;
889
+ if (mtu < init_net . ipv6 . sysctl . ip6_rt_min_advmss )
890
+ mtu = init_net . ipv6 . sysctl . ip6_rt_min_advmss ;
899
891
900
892
/*
901
893
* Maximal non-jumbo IPv6 payload is IPV6_MAXPLEN and
@@ -995,19 +987,19 @@ static int ip6_dst_gc(void)
995
987
static unsigned long last_gc ;
996
988
unsigned long now = jiffies ;
997
989
998
- if (time_after (last_gc + ip6_rt_gc_min_interval , now ) &&
999
- atomic_read (& ip6_dst_ops .entries ) <= ip6_rt_max_size )
990
+ if (time_after (last_gc + init_net . ipv6 . sysctl . ip6_rt_gc_min_interval , now ) &&
991
+ atomic_read (& ip6_dst_ops .entries ) <= init_net . ipv6 . sysctl . ip6_rt_max_size )
1000
992
goto out ;
1001
993
1002
994
expire ++ ;
1003
995
fib6_run_gc (expire );
1004
996
last_gc = now ;
1005
997
if (atomic_read (& ip6_dst_ops .entries ) < ip6_dst_ops .gc_thresh )
1006
- expire = ip6_rt_gc_timeout >>1 ;
998
+ expire = init_net . ipv6 . sysctl . ip6_rt_gc_timeout >>1 ;
1007
999
1008
1000
out :
1009
- expire -= expire >>ip6_rt_gc_elasticity ;
1010
- return (atomic_read (& ip6_dst_ops .entries ) > ip6_rt_max_size );
1001
+ expire -= expire >>init_net . ipv6 . sysctl . ip6_rt_gc_elasticity ;
1002
+ return (atomic_read (& ip6_dst_ops .entries ) > init_net . ipv6 . sysctl . ip6_rt_max_size );
1011
1003
}
1012
1004
1013
1005
/* Clean host part of a prefix. Not necessary in radix tree,
@@ -1513,7 +1505,7 @@ void rt6_pmtu_discovery(struct in6_addr *daddr, struct in6_addr *saddr,
1513
1505
rt -> u .dst .metrics [RTAX_MTU - 1 ] = pmtu ;
1514
1506
if (allfrag )
1515
1507
rt -> u .dst .metrics [RTAX_FEATURES - 1 ] |= RTAX_FEATURE_ALLFRAG ;
1516
- dst_set_expires (& rt -> u .dst , ip6_rt_mtu_expires );
1508
+ dst_set_expires (& rt -> u .dst , init_net . ipv6 . sysctl . ip6_rt_mtu_expires );
1517
1509
rt -> rt6i_flags |= RTF_MODIFIED |RTF_EXPIRES ;
1518
1510
goto out ;
1519
1511
}
@@ -1539,7 +1531,7 @@ void rt6_pmtu_discovery(struct in6_addr *daddr, struct in6_addr *saddr,
1539
1531
* which is 10 mins. After 10 mins the decreased pmtu is expired
1540
1532
* and detecting PMTU increase will be automatically happened.
1541
1533
*/
1542
- dst_set_expires (& nrt -> u .dst , ip6_rt_mtu_expires );
1534
+ dst_set_expires (& nrt -> u .dst , init_net . ipv6 . sysctl . ip6_rt_mtu_expires );
1543
1535
nrt -> rt6i_flags |= RTF_DYNAMIC |RTF_EXPIRES ;
1544
1536
1545
1537
ip6_ins_rt (nrt );
@@ -2395,15 +2387,14 @@ static inline void ipv6_route_proc_fini(struct net *net)
2395
2387
2396
2388
#ifdef CONFIG_SYSCTL
2397
2389
2398
- static int flush_delay ;
2399
-
2400
2390
static
2401
2391
int ipv6_sysctl_rtcache_flush (ctl_table * ctl , int write , struct file * filp ,
2402
2392
void __user * buffer , size_t * lenp , loff_t * ppos )
2403
2393
{
2394
+ int delay = init_net .ipv6 .sysctl .flush_delay ;
2404
2395
if (write ) {
2405
2396
proc_dointvec (ctl , write , filp , buffer , lenp , ppos );
2406
- fib6_run_gc (flush_delay <= 0 ? ~0UL : (unsigned long )flush_delay );
2397
+ fib6_run_gc (delay <= 0 ? ~0UL : (unsigned long )delay );
2407
2398
return 0 ;
2408
2399
} else
2409
2400
return - EINVAL ;
@@ -2412,7 +2403,7 @@ int ipv6_sysctl_rtcache_flush(ctl_table *ctl, int write, struct file * filp,
2412
2403
ctl_table ipv6_route_table_template [] = {
2413
2404
{
2414
2405
.procname = "flush" ,
2415
- .data = & flush_delay ,
2406
+ .data = & init_net . ipv6 . sysctl . flush_delay ,
2416
2407
.maxlen = sizeof (int ),
2417
2408
.mode = 0200 ,
2418
2409
.proc_handler = & ipv6_sysctl_rtcache_flush
@@ -2428,15 +2419,15 @@ ctl_table ipv6_route_table_template[] = {
2428
2419
{
2429
2420
.ctl_name = NET_IPV6_ROUTE_MAX_SIZE ,
2430
2421
.procname = "max_size" ,
2431
- .data = & ip6_rt_max_size ,
2422
+ .data = & init_net . ipv6 . sysctl . ip6_rt_max_size ,
2432
2423
.maxlen = sizeof (int ),
2433
2424
.mode = 0644 ,
2434
2425
.proc_handler = & proc_dointvec ,
2435
2426
},
2436
2427
{
2437
2428
.ctl_name = NET_IPV6_ROUTE_GC_MIN_INTERVAL ,
2438
2429
.procname = "gc_min_interval" ,
2439
- .data = & ip6_rt_gc_min_interval ,
2430
+ .data = & init_net . ipv6 . sysctl . ip6_rt_gc_min_interval ,
2440
2431
.maxlen = sizeof (int ),
2441
2432
.mode = 0644 ,
2442
2433
.proc_handler = & proc_dointvec_jiffies ,
@@ -2445,7 +2436,7 @@ ctl_table ipv6_route_table_template[] = {
2445
2436
{
2446
2437
.ctl_name = NET_IPV6_ROUTE_GC_TIMEOUT ,
2447
2438
.procname = "gc_timeout" ,
2448
- .data = & ip6_rt_gc_timeout ,
2439
+ .data = & init_net . ipv6 . sysctl . ip6_rt_gc_timeout ,
2449
2440
.maxlen = sizeof (int ),
2450
2441
.mode = 0644 ,
2451
2442
.proc_handler = & proc_dointvec_jiffies ,
@@ -2454,7 +2445,7 @@ ctl_table ipv6_route_table_template[] = {
2454
2445
{
2455
2446
.ctl_name = NET_IPV6_ROUTE_GC_INTERVAL ,
2456
2447
.procname = "gc_interval" ,
2457
- .data = & ip6_rt_gc_interval ,
2448
+ .data = & init_net . ipv6 . sysctl . ip6_rt_gc_interval ,
2458
2449
.maxlen = sizeof (int ),
2459
2450
.mode = 0644 ,
2460
2451
.proc_handler = & proc_dointvec_jiffies ,
@@ -2463,7 +2454,7 @@ ctl_table ipv6_route_table_template[] = {
2463
2454
{
2464
2455
.ctl_name = NET_IPV6_ROUTE_GC_ELASTICITY ,
2465
2456
.procname = "gc_elasticity" ,
2466
- .data = & ip6_rt_gc_elasticity ,
2457
+ .data = & init_net . ipv6 . sysctl . ip6_rt_gc_elasticity ,
2467
2458
.maxlen = sizeof (int ),
2468
2459
.mode = 0644 ,
2469
2460
.proc_handler = & proc_dointvec_jiffies ,
@@ -2472,7 +2463,7 @@ ctl_table ipv6_route_table_template[] = {
2472
2463
{
2473
2464
.ctl_name = NET_IPV6_ROUTE_MTU_EXPIRES ,
2474
2465
.procname = "mtu_expires" ,
2475
- .data = & ip6_rt_mtu_expires ,
2466
+ .data = & init_net . ipv6 . sysctl . ip6_rt_mtu_expires ,
2476
2467
.maxlen = sizeof (int ),
2477
2468
.mode = 0644 ,
2478
2469
.proc_handler = & proc_dointvec_jiffies ,
@@ -2481,7 +2472,7 @@ ctl_table ipv6_route_table_template[] = {
2481
2472
{
2482
2473
.ctl_name = NET_IPV6_ROUTE_MIN_ADVMSS ,
2483
2474
.procname = "min_adv_mss" ,
2484
- .data = & ip6_rt_min_advmss ,
2475
+ .data = & init_net . ipv6 . sysctl . ip6_rt_min_advmss ,
2485
2476
.maxlen = sizeof (int ),
2486
2477
.mode = 0644 ,
2487
2478
.proc_handler = & proc_dointvec_jiffies ,
@@ -2490,7 +2481,7 @@ ctl_table ipv6_route_table_template[] = {
2490
2481
{
2491
2482
.ctl_name = NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS ,
2492
2483
.procname = "gc_min_interval_ms" ,
2493
- .data = & ip6_rt_gc_min_interval ,
2484
+ .data = & init_net . ipv6 . sysctl . ip6_rt_gc_min_interval ,
2494
2485
.maxlen = sizeof (int ),
2495
2486
.mode = 0644 ,
2496
2487
.proc_handler = & proc_dointvec_ms_jiffies ,
0 commit comments