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 = container_of(ctl->data, struct net, in proc_sctp_do_hmac_alg()
404 if (write) { in proc_sctp_do_hmac_alg()
405 tbl.data = tmp; in proc_sctp_do_hmac_alg()
408 tbl.data = net->sctp.sctp_hmac_alg ? : none; in proc_sctp_do_hmac_alg()
409 tbl.maxlen = strlen(tbl.data); in proc_sctp_do_hmac_alg()
412 ret = proc_dostring(&tbl, write, buffer, lenp, ppos); in proc_sctp_do_hmac_alg()
413 if (write && ret == 0) { in proc_sctp_do_hmac_alg()
416 net->sctp.sctp_hmac_alg = "md5"; in proc_sctp_do_hmac_alg()
422 net->sctp.sctp_hmac_alg = "sha1"; in proc_sctp_do_hmac_alg()
427 net->sctp.sctp_hmac_alg = NULL; in proc_sctp_do_hmac_alg()
431 ret = -EINVAL; in proc_sctp_do_hmac_alg()
437 static int proc_sctp_do_rto_min(struct ctl_table *ctl, int write, in proc_sctp_do_rto_min() argument
440 struct net *net = container_of(ctl->data, struct net, sctp.rto_min); in proc_sctp_do_rto_min()
441 unsigned int min = *(unsigned int *) ctl->extra1; in proc_sctp_do_rto_min()
442 unsigned int max = *(unsigned int *) ctl->extra2; in proc_sctp_do_rto_min()
449 if (write) in proc_sctp_do_rto_min()
450 tbl.data = &new_value; in proc_sctp_do_rto_min()
452 tbl.data = &net->sctp.rto_min; in proc_sctp_do_rto_min()
454 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos); in proc_sctp_do_rto_min()
455 if (write && ret == 0) { in proc_sctp_do_rto_min()
457 return -EINVAL; in proc_sctp_do_rto_min()
459 net->sctp.rto_min = new_value; in proc_sctp_do_rto_min()
465 static int proc_sctp_do_rto_max(struct ctl_table *ctl, int write, in proc_sctp_do_rto_max() argument
468 struct net *net = container_of(ctl->data, struct net, sctp.rto_max); in proc_sctp_do_rto_max()
469 unsigned int min = *(unsigned int *) ctl->extra1; in proc_sctp_do_rto_max()
470 unsigned int max = *(unsigned int *) ctl->extra2; in proc_sctp_do_rto_max()
477 if (write) in proc_sctp_do_rto_max()
478 tbl.data = &new_value; in proc_sctp_do_rto_max()
480 tbl.data = &net->sctp.rto_max; in proc_sctp_do_rto_max()
482 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos); in proc_sctp_do_rto_max()
483 if (write && ret == 0) { in proc_sctp_do_rto_max()
485 return -EINVAL; in proc_sctp_do_rto_max()
487 net->sctp.rto_max = new_value; in proc_sctp_do_rto_max()
493 static int proc_sctp_do_alpha_beta(struct ctl_table *ctl, int write, in proc_sctp_do_alpha_beta() argument
496 if (write) in proc_sctp_do_alpha_beta()
500 return proc_dointvec_minmax(ctl, write, buffer, lenp, ppos); in proc_sctp_do_alpha_beta()
503 static int proc_sctp_do_auth(struct ctl_table *ctl, int write, in proc_sctp_do_auth() argument
506 struct net *net = container_of(ctl->data, struct net, sctp.auth_enable); in proc_sctp_do_auth()
513 if (write) in proc_sctp_do_auth()
514 tbl.data = &new_value; in proc_sctp_do_auth()
516 tbl.data = &net->sctp.auth_enable; in proc_sctp_do_auth()
518 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos); in proc_sctp_do_auth()
519 if (write && ret == 0) { in proc_sctp_do_auth()
520 struct sock *sk = net->sctp.ctl_sock; in proc_sctp_do_auth()
522 net->sctp.auth_enable = new_value; in proc_sctp_do_auth()
525 sctp_sk(sk)->ep->auth_enable = new_value; in proc_sctp_do_auth()
532 static int proc_sctp_do_udp_port(struct ctl_table *ctl, int write, in proc_sctp_do_udp_port() argument
535 struct net *net = container_of(ctl->data, struct net, sctp.udp_port); in proc_sctp_do_udp_port()
536 unsigned int min = *(unsigned int *)ctl->extra1; in proc_sctp_do_udp_port()
537 unsigned int max = *(unsigned int *)ctl->extra2; in proc_sctp_do_udp_port()
544 if (write) in proc_sctp_do_udp_port()
545 tbl.data = &new_value; in proc_sctp_do_udp_port()
547 tbl.data = &net->sctp.udp_port; in proc_sctp_do_udp_port()
549 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos); in proc_sctp_do_udp_port()
550 if (write && ret == 0) { in proc_sctp_do_udp_port()
551 struct sock *sk = net->sctp.ctl_sock; in proc_sctp_do_udp_port()
554 return -EINVAL; in proc_sctp_do_udp_port()
556 net->sctp.udp_port = new_value; in proc_sctp_do_udp_port()
561 net->sctp.udp_port = 0; in proc_sctp_do_udp_port()
566 sctp_sk(sk)->udp_port = htons(net->sctp.udp_port); in proc_sctp_do_udp_port()
573 static int proc_sctp_do_probe_interval(struct ctl_table *ctl, int write, in proc_sctp_do_probe_interval() argument
576 struct net *net = container_of(ctl->data, struct net, in proc_sctp_do_probe_interval()
584 if (write) in proc_sctp_do_probe_interval()
585 tbl.data = &new_value; in proc_sctp_do_probe_interval()
587 tbl.data = &net->sctp.probe_interval; in proc_sctp_do_probe_interval()
589 ret = proc_dointvec(&tbl, write, buffer, lenp, ppos); in proc_sctp_do_probe_interval()
590 if (write && ret == 0) { in proc_sctp_do_probe_interval()
592 return -EINVAL; in proc_sctp_do_probe_interval()
594 net->sctp.probe_interval = new_value; in proc_sctp_do_probe_interval()
607 return -ENOMEM; in sctp_sysctl_net_register()
609 for (i = 0; table[i].data; i++) in sctp_sysctl_net_register()
610 table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp; in sctp_sysctl_net_register()
612 table[SCTP_RTO_MIN_IDX].extra2 = &net->sctp.rto_max; in sctp_sysctl_net_register()
613 table[SCTP_RTO_MAX_IDX].extra1 = &net->sctp.rto_min; in sctp_sysctl_net_register()
614 table[SCTP_PF_RETRANS_IDX].extra2 = &net->sctp.ps_retrans; in sctp_sysctl_net_register()
615 table[SCTP_PS_RETRANS_IDX].extra1 = &net->sctp.pf_retrans; in sctp_sysctl_net_register()
617 net->sctp.sysctl_header = register_net_sysctl_sz(net, "net/sctp", in sctp_sysctl_net_register()
620 if (net->sctp.sysctl_header == NULL) { in sctp_sysctl_net_register()
622 return -ENOMEM; in sctp_sysctl_net_register()
631 table = net->sctp.sysctl_header->ctl_table_arg; in sctp_sysctl_net_unregister()
632 unregister_net_sysctl_table(net->sctp.sysctl_header); in sctp_sysctl_net_unregister()