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(struct ctl_table *ctl, int write,
48 static int proc_sctp_do_rto_min(struct ctl_table *ctl, int write,
50 static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write, void *buffer,
52 static int proc_sctp_do_udp_port(struct ctl_table *ctl, int write, void *buffer,
54 static int proc_sctp_do_alpha_beta(struct ctl_table *ctl, int write,
56 static int proc_sctp_do_auth(struct ctl_table *ctl, int write,
58 static int proc_sctp_do_probe_interval(struct ctl_table *ctl, int write,
64 .data = &sysctl_sctp_mem,
71 .data = &sysctl_sctp_rmem,
78 .data = &sysctl_sctp_wmem,
100 .data = &init_net.sctp.rto_min,
109 .data = &init_net.sctp.rto_max,
118 .data = &init_net.sctp.pf_retrans,
127 .data = &init_net.sctp.ps_retrans,
136 .data = &init_net.sctp.rto_initial,
145 .data = &init_net.sctp.rto_alpha,
154 .data = &init_net.sctp.rto_beta,
163 .data = &init_net.sctp.max_burst,
172 .data = &init_net.sctp.cookie_preserve_enable,
179 .data = &init_net.sctp.sctp_hmac_alg,
186 .data = &init_net.sctp.valid_cookie_life,
195 .data = &init_net.sctp.sack_timeout,
204 .data = &init_net.sctp.hb_interval,
213 .data = &init_net.sctp.max_retrans_association,
222 .data = &init_net.sctp.max_retrans_path,
231 .data = &init_net.sctp.max_retrans_init,
240 .data = &init_net.sctp.sndbuf_policy,
247 .data = &init_net.sctp.rcvbuf_policy,
254 .data = &init_net.sctp.default_auto_asconf,
261 .data = &init_net.sctp.addip_enable,
268 .data = &init_net.sctp.addip_noauth,
275 .data = &init_net.sctp.prsctp_enable,
282 .data = &init_net.sctp.reconf_enable,
289 .data = &init_net.sctp.auth_enable,
296 .data = &init_net.sctp.intl_enable,
303 .data = &init_net.sctp.ecn_enable,
310 .data = &init_net.sctp.probe_interval,
317 .data = &init_net.sctp.udp_port,
326 .data = &init_net.sctp.encap_port,
335 .data = &init_net.sctp.scope_policy,
344 .data = &init_net.sctp.rwnd_upd_shift,
353 .data = &init_net.sctp.max_autoclose,
363 .data = &init_net.sctp.l3mdev_accept,
373 .data = &init_net.sctp.pf_enable,
380 .data = &init_net.sctp.pf_expose,
391 static int proc_sctp_do_hmac_alg(struct ctl_table *ctl, int write, in proc_sctp_do_hmac_alg() argument
394 struct net *net = current->nsproxy->net_ns; in proc_sctp_do_hmac_alg()
403 if (write) { in proc_sctp_do_hmac_alg()
404 tbl.data = tmp; in proc_sctp_do_hmac_alg()
407 tbl.data = net->sctp.sctp_hmac_alg ? : none; in proc_sctp_do_hmac_alg()
408 tbl.maxlen = strlen(tbl.data); in proc_sctp_do_hmac_alg()
411 ret = proc_dostring(&tbl, write, buffer, lenp, ppos); in proc_sctp_do_hmac_alg()
412 if (write && ret == 0) { in proc_sctp_do_hmac_alg()
415 net->sctp.sctp_hmac_alg = "md5"; in proc_sctp_do_hmac_alg()
421 net->sctp.sctp_hmac_alg = "sha1"; in proc_sctp_do_hmac_alg()
426 net->sctp.sctp_hmac_alg = NULL; in proc_sctp_do_hmac_alg()
430 ret = -EINVAL; in proc_sctp_do_hmac_alg()
436 static int proc_sctp_do_rto_min(struct ctl_table *ctl, int write, in proc_sctp_do_rto_min() argument
439 struct net *net = current->nsproxy->net_ns; in proc_sctp_do_rto_min()
440 unsigned int min = *(unsigned int *) ctl->extra1; in proc_sctp_do_rto_min()
441 unsigned int max = *(unsigned int *) ctl->extra2; in proc_sctp_do_rto_min()
448 if (write) in proc_sctp_do_rto_min()
449 tbl.data = &new_value; in proc_sctp_do_rto_min()
451 tbl.data = &net->sctp.rto_min; in proc_sctp_do_rto_min()
453 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos); in proc_sctp_do_rto_min()
454 if (write && ret == 0) { in proc_sctp_do_rto_min()
456 return -EINVAL; in proc_sctp_do_rto_min()
458 net->sctp.rto_min = new_value; in proc_sctp_do_rto_min()
464 static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write, in proc_sctp_do_rto_max() argument
467 struct net *net = current->nsproxy->net_ns; in proc_sctp_do_rto_max()
468 unsigned int min = *(unsigned int *) ctl->extra1; in proc_sctp_do_rto_max()
469 unsigned int max = *(unsigned int *) ctl->extra2; in proc_sctp_do_rto_max()
476 if (write) in proc_sctp_do_rto_max()
477 tbl.data = &new_value; in proc_sctp_do_rto_max()
479 tbl.data = &net->sctp.rto_max; in proc_sctp_do_rto_max()
481 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos); in proc_sctp_do_rto_max()
482 if (write && ret == 0) { in proc_sctp_do_rto_max()
484 return -EINVAL; in proc_sctp_do_rto_max()
486 net->sctp.rto_max = new_value; in proc_sctp_do_rto_max()
492 static int proc_sctp_do_alpha_beta(struct ctl_table *ctl, int write, in proc_sctp_do_alpha_beta() argument
495 if (write) in proc_sctp_do_alpha_beta()
499 return proc_dointvec_minmax(ctl, write, buffer, lenp, ppos); in proc_sctp_do_alpha_beta()
502 static int proc_sctp_do_auth(struct ctl_table *ctl, int write, in proc_sctp_do_auth() argument
505 struct net *net = current->nsproxy->net_ns; in proc_sctp_do_auth()
512 if (write) in proc_sctp_do_auth()
513 tbl.data = &new_value; in proc_sctp_do_auth()
515 tbl.data = &net->sctp.auth_enable; in proc_sctp_do_auth()
517 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos); in proc_sctp_do_auth()
518 if (write && ret == 0) { in proc_sctp_do_auth()
519 struct sock *sk = net->sctp.ctl_sock; in proc_sctp_do_auth()
521 net->sctp.auth_enable = new_value; in proc_sctp_do_auth()
524 sctp_sk(sk)->ep->auth_enable = new_value; in proc_sctp_do_auth()
531 static int proc_sctp_do_udp_port(struct ctl_table *ctl, int write, in proc_sctp_do_udp_port() argument
534 struct net *net = current->nsproxy->net_ns; in proc_sctp_do_udp_port()
535 unsigned int min = *(unsigned int *)ctl->extra1; in proc_sctp_do_udp_port()
536 unsigned int max = *(unsigned int *)ctl->extra2; in proc_sctp_do_udp_port()
543 if (write) in proc_sctp_do_udp_port()
544 tbl.data = &new_value; in proc_sctp_do_udp_port()
546 tbl.data = &net->sctp.udp_port; in proc_sctp_do_udp_port()
548 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos); in proc_sctp_do_udp_port()
549 if (write && ret == 0) { in proc_sctp_do_udp_port()
550 struct sock *sk = net->sctp.ctl_sock; in proc_sctp_do_udp_port()
553 return -EINVAL; in proc_sctp_do_udp_port()
555 net->sctp.udp_port = new_value; in proc_sctp_do_udp_port()
560 net->sctp.udp_port = 0; in proc_sctp_do_udp_port()
565 sctp_sk(sk)->udp_port = htons(net->sctp.udp_port); in proc_sctp_do_udp_port()
572 static int proc_sctp_do_probe_interval(struct ctl_table *ctl, int write, in proc_sctp_do_probe_interval() argument
575 struct net *net = current->nsproxy->net_ns; in proc_sctp_do_probe_interval()
582 if (write) in proc_sctp_do_probe_interval()
583 tbl.data = &new_value; in proc_sctp_do_probe_interval()
585 tbl.data = &net->sctp.probe_interval; in proc_sctp_do_probe_interval()
587 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos); in proc_sctp_do_probe_interval()
588 if (write && ret == 0) { in proc_sctp_do_probe_interval()
590 return -EINVAL; in proc_sctp_do_probe_interval()
592 net->sctp.probe_interval = new_value; in proc_sctp_do_probe_interval()
605 return -ENOMEM; in sctp_sysctl_net_register()
607 for (i = 0; table[i].data; i++) in sctp_sysctl_net_register()
608 table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp; in sctp_sysctl_net_register()
610 table[SCTP_RTO_MIN_IDX].extra2 = &net->sctp.rto_max; in sctp_sysctl_net_register()
611 table[SCTP_RTO_MAX_IDX].extra1 = &net->sctp.rto_min; in sctp_sysctl_net_register()
612 table[SCTP_PF_RETRANS_IDX].extra2 = &net->sctp.ps_retrans; in sctp_sysctl_net_register()
613 table[SCTP_PS_RETRANS_IDX].extra1 = &net->sctp.pf_retrans; in sctp_sysctl_net_register()
615 net->sctp.sysctl_header = register_net_sysctl_sz(net, "net/sctp", in sctp_sysctl_net_register()
618 if (net->sctp.sysctl_header == NULL) { in sctp_sysctl_net_register()
620 return -ENOMEM; in sctp_sysctl_net_register()
629 table = net->sctp.sysctl_header->ctl_table_arg; in sctp_sysctl_net_unregister()
630 unregister_net_sysctl_table(net->sctp.sysctl_header); in sctp_sysctl_net_unregister()