| .. | .. |
|---|
| 79 | 79 | { /* sentinel */ } |
|---|
| 80 | 80 | }; |
|---|
| 81 | 81 | |
|---|
| 82 | +/* The following index defines are used in sctp_sysctl_net_register(). |
|---|
| 83 | + * If you add new items to the sctp_net_table, please ensure that |
|---|
| 84 | + * the index values of these defines hold the same meaning indicated by |
|---|
| 85 | + * their macro names when they appear in sctp_net_table. |
|---|
| 86 | + */ |
|---|
| 87 | +#define SCTP_RTO_MIN_IDX 0 |
|---|
| 88 | +#define SCTP_RTO_MAX_IDX 1 |
|---|
| 89 | +#define SCTP_PF_RETRANS_IDX 2 |
|---|
| 90 | +#define SCTP_PS_RETRANS_IDX 3 |
|---|
| 91 | + |
|---|
| 82 | 92 | static struct ctl_table sctp_net_table[] = { |
|---|
| 83 | | - { |
|---|
| 84 | | - .procname = "rto_initial", |
|---|
| 85 | | - .data = &init_net.sctp.rto_initial, |
|---|
| 86 | | - .maxlen = sizeof(unsigned int), |
|---|
| 87 | | - .mode = 0644, |
|---|
| 88 | | - .proc_handler = proc_dointvec_minmax, |
|---|
| 89 | | - .extra1 = SYSCTL_ONE, |
|---|
| 90 | | - .extra2 = &timer_max |
|---|
| 91 | | - }, |
|---|
| 92 | | - { |
|---|
| 93 | + [SCTP_RTO_MIN_IDX] = { |
|---|
| 93 | 94 | .procname = "rto_min", |
|---|
| 94 | 95 | .data = &init_net.sctp.rto_min, |
|---|
| 95 | 96 | .maxlen = sizeof(unsigned int), |
|---|
| .. | .. |
|---|
| 98 | 99 | .extra1 = SYSCTL_ONE, |
|---|
| 99 | 100 | .extra2 = &init_net.sctp.rto_max |
|---|
| 100 | 101 | }, |
|---|
| 101 | | - { |
|---|
| 102 | + [SCTP_RTO_MAX_IDX] = { |
|---|
| 102 | 103 | .procname = "rto_max", |
|---|
| 103 | 104 | .data = &init_net.sctp.rto_max, |
|---|
| 104 | 105 | .maxlen = sizeof(unsigned int), |
|---|
| 105 | 106 | .mode = 0644, |
|---|
| 106 | 107 | .proc_handler = proc_sctp_do_rto_max, |
|---|
| 107 | 108 | .extra1 = &init_net.sctp.rto_min, |
|---|
| 109 | + .extra2 = &timer_max |
|---|
| 110 | + }, |
|---|
| 111 | + [SCTP_PF_RETRANS_IDX] = { |
|---|
| 112 | + .procname = "pf_retrans", |
|---|
| 113 | + .data = &init_net.sctp.pf_retrans, |
|---|
| 114 | + .maxlen = sizeof(int), |
|---|
| 115 | + .mode = 0644, |
|---|
| 116 | + .proc_handler = proc_dointvec_minmax, |
|---|
| 117 | + .extra1 = SYSCTL_ZERO, |
|---|
| 118 | + .extra2 = &init_net.sctp.ps_retrans, |
|---|
| 119 | + }, |
|---|
| 120 | + [SCTP_PS_RETRANS_IDX] = { |
|---|
| 121 | + .procname = "ps_retrans", |
|---|
| 122 | + .data = &init_net.sctp.ps_retrans, |
|---|
| 123 | + .maxlen = sizeof(int), |
|---|
| 124 | + .mode = 0644, |
|---|
| 125 | + .proc_handler = proc_dointvec_minmax, |
|---|
| 126 | + .extra1 = &init_net.sctp.pf_retrans, |
|---|
| 127 | + .extra2 = &ps_retrans_max, |
|---|
| 128 | + }, |
|---|
| 129 | + { |
|---|
| 130 | + .procname = "rto_initial", |
|---|
| 131 | + .data = &init_net.sctp.rto_initial, |
|---|
| 132 | + .maxlen = sizeof(unsigned int), |
|---|
| 133 | + .mode = 0644, |
|---|
| 134 | + .proc_handler = proc_dointvec_minmax, |
|---|
| 135 | + .extra1 = SYSCTL_ONE, |
|---|
| 108 | 136 | .extra2 = &timer_max |
|---|
| 109 | 137 | }, |
|---|
| 110 | 138 | { |
|---|
| .. | .. |
|---|
| 201 | 229 | .proc_handler = proc_dointvec_minmax, |
|---|
| 202 | 230 | .extra1 = SYSCTL_ONE, |
|---|
| 203 | 231 | .extra2 = SYSCTL_INT_MAX, |
|---|
| 204 | | - }, |
|---|
| 205 | | - { |
|---|
| 206 | | - .procname = "pf_retrans", |
|---|
| 207 | | - .data = &init_net.sctp.pf_retrans, |
|---|
| 208 | | - .maxlen = sizeof(int), |
|---|
| 209 | | - .mode = 0644, |
|---|
| 210 | | - .proc_handler = proc_dointvec_minmax, |
|---|
| 211 | | - .extra1 = SYSCTL_ZERO, |
|---|
| 212 | | - .extra2 = &init_net.sctp.ps_retrans, |
|---|
| 213 | | - }, |
|---|
| 214 | | - { |
|---|
| 215 | | - .procname = "ps_retrans", |
|---|
| 216 | | - .data = &init_net.sctp.ps_retrans, |
|---|
| 217 | | - .maxlen = sizeof(int), |
|---|
| 218 | | - .mode = 0644, |
|---|
| 219 | | - .proc_handler = proc_dointvec_minmax, |
|---|
| 220 | | - .extra1 = &init_net.sctp.pf_retrans, |
|---|
| 221 | | - .extra2 = &ps_retrans_max, |
|---|
| 222 | 232 | }, |
|---|
| 223 | 233 | { |
|---|
| 224 | 234 | .procname = "sndbuf_policy", |
|---|
| .. | .. |
|---|
| 489 | 499 | for (i = 0; table[i].data; i++) |
|---|
| 490 | 500 | table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp; |
|---|
| 491 | 501 | |
|---|
| 502 | + table[SCTP_RTO_MIN_IDX].extra2 = &net->sctp.rto_max; |
|---|
| 503 | + table[SCTP_RTO_MAX_IDX].extra1 = &net->sctp.rto_min; |
|---|
| 504 | + table[SCTP_PF_RETRANS_IDX].extra2 = &net->sctp.ps_retrans; |
|---|
| 505 | + table[SCTP_PS_RETRANS_IDX].extra1 = &net->sctp.pf_retrans; |
|---|
| 506 | + |
|---|
| 492 | 507 | net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table); |
|---|
| 493 | 508 | if (net->sctp.sysctl_header == NULL) { |
|---|
| 494 | 509 | kfree(table); |
|---|