Lines Matching +full:write +full:- +full:data

1 // SPDX-License-Identifier: GPL-2.0-or-later
12 * lksctp developers <linux-sctp@vger.kernel.org>
46 static int proc_sctp_do_hmac_alg(const struct ctl_table *ctl, int write,
48 static int proc_sctp_do_rto_min(const struct ctl_table *ctl, int write,
50 static int proc_sctp_do_rto_max(const struct ctl_table *ctl, int write, void *buffer,
52 static int proc_sctp_do_udp_port(const struct ctl_table *ctl, int write, void *buffer,
54 static int proc_sctp_do_alpha_beta(const struct ctl_table *ctl, int write,
56 static int proc_sctp_do_auth(const struct ctl_table *ctl, int write,
58 static int proc_sctp_do_probe_interval(const struct ctl_table *ctl, int write,
64 .data = &sysctl_sctp_mem,
71 .data = &sysctl_sctp_rmem,
78 .data = &sysctl_sctp_wmem,
98 .data = &init_net.sctp.rto_min,
107 .data = &init_net.sctp.rto_max,
116 .data = &init_net.sctp.pf_retrans,
125 .data = &init_net.sctp.ps_retrans,
134 .data = &init_net.sctp.rto_initial,
143 .data = &init_net.sctp.rto_alpha,
152 .data = &init_net.sctp.rto_beta,
161 .data = &init_net.sctp.max_burst,
170 .data = &init_net.sctp.cookie_preserve_enable,
177 .data = &init_net.sctp.cookie_auth_enable,
184 .data = &init_net.sctp.valid_cookie_life,
193 .data = &init_net.sctp.sack_timeout,
202 .data = &init_net.sctp.hb_interval,
211 .data = &init_net.sctp.max_retrans_association,
220 .data = &init_net.sctp.max_retrans_path,
229 .data = &init_net.sctp.max_retrans_init,
238 .data = &init_net.sctp.sndbuf_policy,
245 .data = &init_net.sctp.rcvbuf_policy,
252 .data = &init_net.sctp.default_auto_asconf,
259 .data = &init_net.sctp.addip_enable,
266 .data = &init_net.sctp.addip_noauth,
273 .data = &init_net.sctp.prsctp_enable,
280 .data = &init_net.sctp.reconf_enable,
287 .data = &init_net.sctp.auth_enable,
294 .data = &init_net.sctp.intl_enable,
301 .data = &init_net.sctp.ecn_enable,
308 .data = &init_net.sctp.probe_interval,
315 .data = &init_net.sctp.udp_port,
324 .data = &init_net.sctp.encap_port,
333 .data = &init_net.sctp.scope_policy,
342 .data = &init_net.sctp.rwnd_upd_shift,
351 .data = &init_net.sctp.max_autoclose,
361 .data = &init_net.sctp.l3mdev_accept,
371 .data = &init_net.sctp.pf_enable,
378 .data = &init_net.sctp.pf_expose,
387 static int proc_sctp_do_hmac_alg(const struct ctl_table *ctl, int write,
390 struct net *net = container_of(ctl->data, struct net,
398 if (write) {
399 tbl.data = tmp;
400 tbl.maxlen = sizeof(tmp) - 1;
405 net->sctp.cookie_auth_enable = 1;
409 net->sctp.cookie_auth_enable = 0;
412 return -EINVAL;
414 if (net->sctp.cookie_auth_enable)
415 tbl.data = (char *)"sha256";
417 tbl.data = (char *)"none";
418 tbl.maxlen = strlen(tbl.data);
422 static int proc_sctp_do_rto_min(const struct ctl_table *ctl, int write,
425 struct net *net = container_of(ctl->data, struct net, sctp.rto_min);
426 unsigned int min = *(unsigned int *) ctl->extra1;
427 unsigned int max = *(unsigned int *) ctl->extra2;
434 if (write)
435 tbl.data = &new_value;
437 tbl.data = &net->sctp.rto_min;
439 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos);
440 if (write && ret == 0) {
442 return -EINVAL;
444 net->sctp.rto_min = new_value;
450 static int proc_sctp_do_rto_max(const struct ctl_table *ctl, int write,
453 struct net *net = container_of(ctl->data, struct net, sctp.rto_max);
454 unsigned int min = *(unsigned int *) ctl->extra1;
455 unsigned int max = *(unsigned int *) ctl->extra2;
462 if (write)
463 tbl.data = &new_value;
465 tbl.data = &net->sctp.rto_max;
467 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos);
468 if (write && ret == 0) {
470 return -EINVAL;
472 net->sctp.rto_max = new_value;
478 static int proc_sctp_do_alpha_beta(const struct ctl_table *ctl, int write,
481 if (write)
485 return proc_dointvec_minmax(ctl, write, buffer, lenp, ppos);
488 static int proc_sctp_do_auth(const struct ctl_table *ctl, int write,
491 struct net *net = container_of(ctl->data, struct net, sctp.auth_enable);
498 if (write)
499 tbl.data = &new_value;
501 tbl.data = &net->sctp.auth_enable;
503 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos);
504 if (write && ret == 0) {
505 struct sock *sk = net->sctp.ctl_sock;
507 net->sctp.auth_enable = new_value;
510 sctp_sk(sk)->ep->auth_enable = new_value;
519 static int proc_sctp_do_udp_port(const struct ctl_table *ctl, int write,
522 struct net *net = container_of(ctl->data, struct net, sctp.udp_port);
523 unsigned int min = *(unsigned int *)ctl->extra1;
524 unsigned int max = *(unsigned int *)ctl->extra2;
531 if (write)
532 tbl.data = &new_value;
534 tbl.data = &net->sctp.udp_port;
536 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos);
537 if (write && ret == 0) {
538 struct sock *sk = net->sctp.ctl_sock;
541 return -EINVAL;
544 net->sctp.udp_port = new_value;
549 net->sctp.udp_port = 0;
554 sctp_sk(sk)->udp_port = htons(net->sctp.udp_port);
562 static int proc_sctp_do_probe_interval(const struct ctl_table *ctl, int write,
565 struct net *net = container_of(ctl->data, struct net,
573 if (write)
574 tbl.data = &new_value;
576 tbl.data = &net->sctp.probe_interval;
578 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos);
579 if (write && ret == 0) {
581 return -EINVAL;
583 net->sctp.probe_interval = new_value;
597 return -ENOMEM;
600 table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp;
602 table[SCTP_RTO_MIN_IDX].extra2 = &net->sctp.rto_max;
603 table[SCTP_RTO_MAX_IDX].extra1 = &net->sctp.rto_min;
604 table[SCTP_PF_RETRANS_IDX].extra2 = &net->sctp.ps_retrans;
605 table[SCTP_PS_RETRANS_IDX].extra1 = &net->sctp.pf_retrans;
607 net->sctp.sysctl_header = register_net_sysctl_sz(net, "net/sctp",
609 if (net->sctp.sysctl_header == NULL) {
611 return -ENOMEM;
620 table = net->sctp.sysctl_header->ctl_table_arg;
621 unregister_net_sysctl_table(net->sctp.sysctl_header);