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

1 // SPDX-License-Identifier: GPL-2.0
26 static int tcp_adv_win_scale_min = -31;
60 if (same_parity && !net->ipv4.ip_local_ports.warned) {
61 net->ipv4.ip_local_ports.warned = true;
64 WRITE_ONCE(net->ipv4.ip_local_ports.range, high << 16 | low);
68 static int ipv4_local_port_range(const struct ctl_table *table, int write,
71 struct net *net = table->data;
75 .data = &range,
77 .mode = table->mode,
84 ret = proc_dointvec_minmax(&tmp, write, buffer, lenp, ppos);
86 if (write && ret == 0) {
92 (range[0] < READ_ONCE(net->ipv4.sysctl_ip_prot_sock)))
93 ret = -EINVAL;
102 static int ipv4_privileged_ports(const struct ctl_table *table, int write,
105 struct net *net = container_of(table->data, struct net,
111 .data = &pports,
113 .mode = table->mode,
118 pports = READ_ONCE(net->ipv4.sysctl_ip_prot_sock);
120 ret = proc_dointvec_minmax(&tmp, write, buffer, lenp, ppos);
122 if (write && ret == 0) {
128 ret = -EINVAL;
130 WRITE_ONCE(net->ipv4.sysctl_ip_prot_sock, pports);
139 kgid_t *data = table->data;
141 container_of(table->data, struct net, ipv4.ping_group_range.range);
144 seq = read_seqbegin(&net->ipv4.ping_group_range.lock);
146 *low = data[0];
147 *high = data[1];
148 } while (read_seqretry(&net->ipv4.ping_group_range.lock, seq));
155 kgid_t *data = table->data;
157 container_of(table->data, struct net, ipv4.ping_group_range.range);
158 write_seqlock(&net->ipv4.ping_group_range.lock);
159 data[0] = low;
160 data[1] = high;
161 write_sequnlock(&net->ipv4.ping_group_range.lock);
165 static int ipv4_ping_group_range(const struct ctl_table *table, int write,
173 .data = &urange,
175 .mode = table->mode,
183 ret = proc_doulongvec_minmax(&tmp, write, buffer, lenp, ppos);
185 if (write && ret == 0) {
189 return -EINVAL;
200 static int ipv4_fwd_update_priority(const struct ctl_table *table, int write,
206 net = container_of(table->data, struct net,
208 ret = proc_dou8vec_minmax(table, write, buffer, lenp, ppos);
209 if (write && ret == 0)
216 static int proc_tcp_congestion_control(const struct ctl_table *ctl, int write,
219 struct net *net = container_of(ctl->data, struct net,
223 .data = val,
230 ret = proc_dostring(&tbl, write, buffer, lenp, ppos);
231 if (write && ret == 0)
237 int write, void *buffer,
243 tbl.data = kmalloc(tbl.maxlen, GFP_USER);
244 if (!tbl.data)
245 return -ENOMEM;
246 tcp_get_available_congestion_control(tbl.data, TCP_CA_BUF_MAX);
247 ret = proc_dostring(&tbl, write, buffer, lenp, ppos);
248 kfree(tbl.data);
253 int write, void *buffer,
259 tbl.data = kmalloc(tbl.maxlen, GFP_USER);
260 if (!tbl.data)
261 return -ENOMEM;
263 tcp_get_allowed_congestion_control(tbl.data, tbl.maxlen);
264 ret = proc_dostring(&tbl, write, buffer, lenp, ppos);
265 if (write && ret == 0)
266 ret = tcp_set_allowed_congestion_control(tbl.data);
267 kfree(tbl.data);
276 if (sscanf(buf, "%x-%x-%x-%x", user_key, user_key + 1,
278 ret = -EINVAL;
283 pr_debug("proc TFO key set 0x%x-%x-%x-%x <- 0x%s: %u\n",
289 static int proc_tcp_fastopen_key(const struct ctl_table *table, int write,
292 struct net *net = container_of(table->data, struct net,
305 tbl.data = kmalloc(tbl.maxlen, GFP_KERNEL);
306 if (!tbl.data)
307 return -ENOMEM;
319 off += snprintf(tbl.data + off, tbl.maxlen - off,
320 "%08x-%08x-%08x-%08x",
326 if (WARN_ON_ONCE(off >= tbl.maxlen - 1))
330 off += snprintf(tbl.data + off, tbl.maxlen - off, ",");
333 ret = proc_dostring(&tbl, write, buffer, lenp, ppos);
335 if (write && ret == 0) {
336 backup_data = strchr(tbl.data, ',');
341 if (sscanf_key(tbl.data, key)) {
342 ret = -EINVAL;
347 ret = -EINVAL;
356 kfree(tbl.data);
361 int write, void *buffer,
364 struct net *net = container_of(table->data, struct net,
368 ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
369 if (write && ret == 0)
370 atomic_set(&net->ipv4.tfo_active_disable_times, 0);
376 int write, void *buffer, size_t *lenp,
382 tbl.data = kmalloc(tbl.maxlen, GFP_USER);
383 if (!tbl.data)
384 return -ENOMEM;
385 tcp_get_available_ulp(tbl.data, TCP_ULP_BUF_MAX);
386 ret = proc_dostring(&tbl, write, buffer, lenp, ppos);
387 kfree(tbl.data);
392 static int proc_tcp_ehash_entries(const struct ctl_table *table, int write,
395 struct net *net = container_of(table->data, struct net,
397 struct inet_hashinfo *hinfo = net->ipv4.tcp_death_row.hashinfo;
401 tcp_ehash_entries = hinfo->ehash_mask + 1;
406 if (!net_eq(net, &init_net) && !hinfo->pernet)
407 tcp_ehash_entries *= -1;
410 tbl.data = &tcp_ehash_entries;
413 return proc_dointvec(&tbl, write, buffer, lenp, ppos);
416 static int proc_udp_hash_entries(const struct ctl_table *table, int write,
419 struct net *net = container_of(table->data, struct net,
424 udp_hash_entries = net->ipv4.udp_table->mask + 1;
429 if (!net_eq(net, &init_net) && net->ipv4.udp_table == &udp_table)
430 udp_hash_entries *= -1;
433 tbl.data = &udp_hash_entries;
436 return proc_dointvec(&tbl, write, buffer, lenp, ppos);
440 static int proc_fib_multipath_hash_policy(const struct ctl_table *table, int write,
444 struct net *net = container_of(table->data, struct net,
448 ret = proc_dou8vec_minmax(table, write, buffer, lenp, ppos);
449 if (write && ret == 0)
455 static int proc_fib_multipath_hash_fields(const struct ctl_table *table, int write,
462 net = container_of(table->data, struct net,
464 ret = proc_douintvec_minmax(table, write, buffer, lenp, ppos);
465 if (write && ret == 0)
487 WRITE_ONCE(net->ipv4.sysctl_fib_multipath_hash_seed, new);
490 static int proc_fib_multipath_hash_seed(const struct ctl_table *table, int write,
495 struct net *net = table->data;
500 mphs = &net->ipv4.sysctl_fib_multipath_hash_seed;
501 user_seed = mphs->user_seed;
504 tmp.data = &user_seed;
506 ret = proc_douintvec_minmax(&tmp, write, buffer, lenp, ppos);
508 if (write && ret == 0) {
530 .data = &sysctl_tcp_max_orphans,
537 .data = &inet_peer_threshold,
544 .data = &inet_peer_minttl,
551 .data = &inet_peer_maxttl,
559 .data = &sysctl_tcp_mem,
565 .data = &sysctl_tcp_low_latency,
573 .data = &cipso_v4_cache_enabled,
580 .data = &cipso_v4_cache_bucketsize,
587 .data = &cipso_v4_rbm_optfmt,
594 .data = &cipso_v4_rbm_strictvalid,
608 .data = &sysctl_udp_mem,
615 .data = &sysctl_fib_sync_mem,
627 .data = &init_net.ipv4.tcp_death_row.sysctl_max_tw_buckets,
634 .data = &init_net.ipv4.sysctl_icmp_echo_ignore_all,
643 .data = &init_net.ipv4.sysctl_icmp_echo_enable_probe,
652 .data = &init_net.ipv4.sysctl_icmp_echo_ignore_broadcasts,
661 .data = &init_net.ipv4.sysctl_icmp_ignore_bogus_error_responses,
670 .data = &init_net.ipv4.sysctl_icmp_errors_use_inbound_ifaddr,
679 .data = &init_net.ipv4.sysctl_icmp_ratelimit,
686 .data = &init_net.ipv4.sysctl_icmp_ratemask,
693 .data = &init_net.ipv4.sysctl_icmp_msgs_per_sec,
701 .data = &init_net.ipv4.sysctl_icmp_msgs_burst,
709 .data = &init_net.ipv4.ping_group_range.range,
717 .data = &init_net.ipv4.sysctl_raw_l3mdev_accept,
727 .data = &init_net.ipv4.sysctl_tcp_ecn,
736 .data = &init_net.ipv4.sysctl_tcp_ecn_option,
745 .data = &init_net.ipv4.sysctl_tcp_ecn_option_beacon,
754 .data = &init_net.ipv4.sysctl_tcp_ecn_fallback,
763 .data = &init_net.ipv4.sysctl_ip_dynaddr,
770 .data = &init_net.ipv4.sysctl_ip_early_demux,
777 .data = &init_net.ipv4.sysctl_udp_early_demux,
784 .data = &init_net.ipv4.sysctl_tcp_early_demux,
791 .data = &init_net.ipv4.sysctl_nexthop_compat_mode,
800 .data = &init_net.ipv4.sysctl_ip_default_ttl,
810 .data = &init_net,
816 .data = &init_net.ipv4.sysctl_local_reserved_ports,
823 .data = &init_net.ipv4.sysctl_ip_no_pmtu_disc,
830 .data = &init_net.ipv4.sysctl_ip_fwd_use_pmtu,
837 .data = &init_net.ipv4.sysctl_ip_fwd_update_priority,
846 .data = &init_net.ipv4.sysctl_ip_nonlocal_bind,
853 .data = &init_net.ipv4.sysctl_ip_autobind_reuse,
862 .data = &init_net.ipv4.sysctl_fwmark_reflect,
869 .data = &init_net.ipv4.sysctl_tcp_fwmark_accept,
877 .data = &init_net.ipv4.sysctl_tcp_l3mdev_accept,
887 .data = &init_net.ipv4.sysctl_tcp_mtu_probing,
894 .data = &init_net.ipv4.sysctl_tcp_base_mss,
901 .data = &init_net.ipv4.sysctl_tcp_min_snd_mss,
910 .data = &init_net.ipv4.sysctl_tcp_mtu_probe_floor,
919 .data = &init_net.ipv4.sysctl_tcp_probe_threshold,
926 .data = &init_net.ipv4.sysctl_tcp_probe_interval,
934 .data = &init_net.ipv4.sysctl_igmp_llm_reports,
941 .data = &init_net.ipv4.sysctl_igmp_max_memberships,
948 .data = &init_net.ipv4.sysctl_igmp_max_msf,
956 .data = &init_net.ipv4.sysctl_igmp_qrv,
965 .data = &init_net.ipv4.tcp_congestion_control,
984 .data = &init_net.ipv4.sysctl_tcp_keepalive_time,
991 .data = &init_net.ipv4.sysctl_tcp_keepalive_probes,
998 .data = &init_net.ipv4.sysctl_tcp_keepalive_intvl,
1005 .data = &init_net.ipv4.sysctl_tcp_syn_retries,
1014 .data = &init_net.ipv4.sysctl_tcp_synack_retries,
1022 .data = &init_net.ipv4.sysctl_tcp_syncookies,
1030 .data = &init_net.ipv4.sysctl_tcp_migrate_req,
1039 .data = &init_net.ipv4.sysctl_tcp_reordering,
1046 .data = &init_net.ipv4.sysctl_tcp_retries1,
1054 .data = &init_net.ipv4.sysctl_tcp_retries2,
1061 .data = &init_net.ipv4.sysctl_tcp_orphan_retries,
1068 .data = &init_net.ipv4.sysctl_tcp_fin_timeout,
1075 .data = &init_net.ipv4.sysctl_tcp_notsent_lowat,
1082 .data = &init_net.ipv4.sysctl_tcp_tw_reuse,
1091 .data = &init_net.ipv4.sysctl_tcp_tw_reuse_delay,
1100 .data = &init_net.ipv4.sysctl_max_syn_backlog,
1107 .data = &init_net.ipv4.sysctl_tcp_fastopen,
1115 .data = &init_net.ipv4.sysctl_tcp_fastopen,
1126 .data = &init_net.ipv4.sysctl_tcp_fastopen_blackhole_timeout,
1135 .data = &init_net.ipv4.sysctl_fib_multipath_use_neigh,
1144 .data = &init_net.ipv4.sysctl_fib_multipath_hash_policy,
1153 .data = &init_net.ipv4.sysctl_fib_multipath_hash_fields,
1162 .data = &init_net,
1171 .data = &init_net.ipv4.sysctl_ip_prot_sock,
1178 .data = &init_net.ipv4.sysctl_udp_l3mdev_accept,
1188 .data = &init_net.ipv4.sysctl_tcp_sack,
1195 .data = &init_net.ipv4.sysctl_tcp_window_scaling,
1202 .data = &init_net.ipv4.sysctl_tcp_timestamps,
1209 .data = &init_net.ipv4.sysctl_tcp_early_retrans,
1218 .data = &init_net.ipv4.sysctl_tcp_recovery,
1225 .data = &init_net.ipv4.sysctl_tcp_thin_linear_timeouts,
1232 .data = &init_net.ipv4.sysctl_tcp_slow_start_after_idle,
1239 .data = &init_net.ipv4.sysctl_tcp_retrans_collapse,
1246 .data = &init_net.ipv4.sysctl_tcp_stdurg,
1253 .data = &init_net.ipv4.sysctl_tcp_rfc1337,
1260 .data = &init_net.ipv4.sysctl_tcp_abort_on_overflow,
1267 .data = &init_net.ipv4.sysctl_tcp_fack,
1274 .data = &init_net.ipv4.sysctl_tcp_max_reordering,
1281 .data = &init_net.ipv4.sysctl_tcp_dsack,
1288 .data = &init_net.ipv4.sysctl_tcp_app_win,
1297 .data = &init_net.ipv4.sysctl_tcp_adv_win_scale,
1306 .data = &init_net.ipv4.sysctl_tcp_frto,
1313 .data = &init_net.ipv4.sysctl_tcp_nometrics_save,
1320 .data = &init_net.ipv4.sysctl_tcp_no_ssthresh_metrics_save,
1329 .data = &init_net.ipv4.sysctl_tcp_moderate_rcvbuf,
1336 .data = &init_net.ipv4.sysctl_tcp_tso_win_divisor,
1343 .data = &init_net.ipv4.sysctl_tcp_workaround_signed_windows,
1350 .data = &init_net.ipv4.sysctl_tcp_limit_output_bytes,
1357 .data = &init_net.ipv4.sysctl_tcp_challenge_ack_limit,
1364 .data = &init_net.ipv4.sysctl_tcp_min_tso_segs,
1372 .data = &init_net.ipv4.sysctl_tcp_tso_rtt_log,
1379 .data = &init_net.ipv4.sysctl_tcp_min_rtt_wlen,
1388 .data = &init_net.ipv4.sysctl_tcp_autocorking,
1397 .data = &init_net.ipv4.sysctl_tcp_invalid_ratelimit,
1404 .data = &init_net.ipv4.sysctl_tcp_pacing_ss_ratio,
1413 .data = &init_net.ipv4.sysctl_tcp_pacing_ca_ratio,
1422 .data = &init_net.ipv4.sysctl_tcp_wmem,
1430 .data = &init_net.ipv4.sysctl_tcp_rmem,
1438 .data = &init_net.ipv4.sysctl_tcp_comp_sack_delay_ns,
1445 .data = &init_net.ipv4.sysctl_tcp_comp_sack_slack_ns,
1452 .data = &init_net.ipv4.sysctl_tcp_comp_sack_nr,
1460 .data = &init_net.ipv4.sysctl_tcp_backlog_ack_defer,
1469 .data = &init_net.ipv4.sysctl_tcp_reflect_tos,
1478 .data = &init_net.ipv4.sysctl_tcp_child_ehash_entries,
1484 .data = &init_net.ipv4.sysctl_tcp_child_ehash_entries,
1493 .data = &init_net.ipv4.sysctl_udp_child_hash_entries,
1499 .data = &init_net.ipv4.sysctl_udp_child_hash_entries,
1508 .data = &init_net.ipv4.sysctl_udp_rmem_min,
1516 .data = &init_net.ipv4.sysctl_udp_wmem_min,
1524 .data = &init_net.ipv4.sysctl_fib_notify_on_flag_change,
1533 .data = &init_net.ipv4.sysctl_tcp_plb_enabled,
1542 .data = &init_net.ipv4.sysctl_tcp_plb_idle_rehash_rounds,
1550 .data = &init_net.ipv4.sysctl_tcp_plb_rehash_rounds,
1558 .data = &init_net.ipv4.sysctl_tcp_plb_suspend_rto_sec,
1565 .data = &init_net.ipv4.sysctl_tcp_plb_cong_thresh,
1574 .data = &init_net.ipv4.sysctl_tcp_syn_linear_timeouts,
1583 .data = &init_net.ipv4.sysctl_tcp_shrink_window,
1592 .data = &init_net.ipv4.sysctl_tcp_pingpong_thresh,
1600 .data = &init_net.ipv4.sysctl_tcp_rto_min_us,
1608 .data = &init_net.ipv4.sysctl_tcp_rto_max_ms,
1631 if (table[i].data) {
1635 table[i].data += (void *)net - (void *)&init_net;
1637 /* Entries without data pointer are global;
1638 * Make them read-only in non-init_net ns
1645 net->ipv4.ipv4_hdr = register_net_sysctl_sz(net, "net/ipv4", table,
1647 if (!net->ipv4.ipv4_hdr)
1650 net->ipv4.sysctl_local_reserved_ports = kzalloc(65536 / 8, GFP_KERNEL);
1651 if (!net->ipv4.sysctl_local_reserved_ports)
1659 unregister_net_sysctl_table(net->ipv4.ipv4_hdr);
1664 return -ENOMEM;
1671 kfree(net->ipv4.sysctl_local_reserved_ports);
1672 table = net->ipv4.ipv4_hdr->ctl_table_arg;
1673 unregister_net_sysctl_table(net->ipv4.ipv4_hdr);
1688 return -ENOMEM;
1694 return -ENOMEM;