1e55d912fSArnaldo Carvalho de Melo /* 2e55d912fSArnaldo Carvalho de Melo * net/dccp/sysctl.c 3e55d912fSArnaldo Carvalho de Melo * 4e55d912fSArnaldo Carvalho de Melo * An implementation of the DCCP protocol 5e55d912fSArnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@mandriva.com> 6e55d912fSArnaldo Carvalho de Melo * 7e55d912fSArnaldo Carvalho de Melo * This program is free software; you can redistribute it and/or 8e55d912fSArnaldo Carvalho de Melo * modify it under the terms of the GNU General Public License v2 9e55d912fSArnaldo Carvalho de Melo * as published by the Free Software Foundation. 10e55d912fSArnaldo Carvalho de Melo */ 11e55d912fSArnaldo Carvalho de Melo 12e55d912fSArnaldo Carvalho de Melo #include <linux/mm.h> 13e55d912fSArnaldo Carvalho de Melo #include <linux/sysctl.h> 14*2a0109a7SIan McDonald #include "feat.h" 15e55d912fSArnaldo Carvalho de Melo 16e55d912fSArnaldo Carvalho de Melo #ifndef CONFIG_SYSCTL 17e55d912fSArnaldo Carvalho de Melo #error This file should not be compiled without CONFIG_SYSCTL defined 18e55d912fSArnaldo Carvalho de Melo #endif 19e55d912fSArnaldo Carvalho de Melo 20e55d912fSArnaldo Carvalho de Melo static struct ctl_table dccp_default_table[] = { 21e55d912fSArnaldo Carvalho de Melo { 22e55d912fSArnaldo Carvalho de Melo .ctl_name = NET_DCCP_DEFAULT_SEQ_WINDOW, 23e55d912fSArnaldo Carvalho de Melo .procname = "seq_window", 24e55d912fSArnaldo Carvalho de Melo .data = &dccp_feat_default_sequence_window, 25e55d912fSArnaldo Carvalho de Melo .maxlen = sizeof(dccp_feat_default_sequence_window), 26e55d912fSArnaldo Carvalho de Melo .mode = 0644, 27e55d912fSArnaldo Carvalho de Melo .proc_handler = proc_dointvec, 28e55d912fSArnaldo Carvalho de Melo }, 29e55d912fSArnaldo Carvalho de Melo { 30e55d912fSArnaldo Carvalho de Melo .ctl_name = NET_DCCP_DEFAULT_RX_CCID, 31e55d912fSArnaldo Carvalho de Melo .procname = "rx_ccid", 32e55d912fSArnaldo Carvalho de Melo .data = &dccp_feat_default_rx_ccid, 33e55d912fSArnaldo Carvalho de Melo .maxlen = sizeof(dccp_feat_default_rx_ccid), 34e55d912fSArnaldo Carvalho de Melo .mode = 0644, 35e55d912fSArnaldo Carvalho de Melo .proc_handler = proc_dointvec, 36e55d912fSArnaldo Carvalho de Melo }, 37e55d912fSArnaldo Carvalho de Melo { 38e55d912fSArnaldo Carvalho de Melo .ctl_name = NET_DCCP_DEFAULT_TX_CCID, 39e55d912fSArnaldo Carvalho de Melo .procname = "tx_ccid", 40e55d912fSArnaldo Carvalho de Melo .data = &dccp_feat_default_tx_ccid, 41e55d912fSArnaldo Carvalho de Melo .maxlen = sizeof(dccp_feat_default_tx_ccid), 42e55d912fSArnaldo Carvalho de Melo .mode = 0644, 43e55d912fSArnaldo Carvalho de Melo .proc_handler = proc_dointvec, 44e55d912fSArnaldo Carvalho de Melo }, 45e55d912fSArnaldo Carvalho de Melo { 46e55d912fSArnaldo Carvalho de Melo .ctl_name = NET_DCCP_DEFAULT_ACK_RATIO, 47e55d912fSArnaldo Carvalho de Melo .procname = "ack_ratio", 48e55d912fSArnaldo Carvalho de Melo .data = &dccp_feat_default_ack_ratio, 49e55d912fSArnaldo Carvalho de Melo .maxlen = sizeof(dccp_feat_default_ack_ratio), 50e55d912fSArnaldo Carvalho de Melo .mode = 0644, 51e55d912fSArnaldo Carvalho de Melo .proc_handler = proc_dointvec, 52e55d912fSArnaldo Carvalho de Melo }, 53e55d912fSArnaldo Carvalho de Melo { 54e55d912fSArnaldo Carvalho de Melo .ctl_name = NET_DCCP_DEFAULT_SEND_ACKVEC, 55e55d912fSArnaldo Carvalho de Melo .procname = "send_ackvec", 56e55d912fSArnaldo Carvalho de Melo .data = &dccp_feat_default_send_ack_vector, 57e55d912fSArnaldo Carvalho de Melo .maxlen = sizeof(dccp_feat_default_send_ack_vector), 58e55d912fSArnaldo Carvalho de Melo .mode = 0644, 59e55d912fSArnaldo Carvalho de Melo .proc_handler = proc_dointvec, 60e55d912fSArnaldo Carvalho de Melo }, 61e55d912fSArnaldo Carvalho de Melo { 62e55d912fSArnaldo Carvalho de Melo .ctl_name = NET_DCCP_DEFAULT_SEND_NDP, 63e55d912fSArnaldo Carvalho de Melo .procname = "send_ndp", 64e55d912fSArnaldo Carvalho de Melo .data = &dccp_feat_default_send_ndp_count, 65e55d912fSArnaldo Carvalho de Melo .maxlen = sizeof(dccp_feat_default_send_ndp_count), 66e55d912fSArnaldo Carvalho de Melo .mode = 0644, 67e55d912fSArnaldo Carvalho de Melo .proc_handler = proc_dointvec, 68e55d912fSArnaldo Carvalho de Melo }, 69e55d912fSArnaldo Carvalho de Melo { .ctl_name = 0, } 70e55d912fSArnaldo Carvalho de Melo }; 71e55d912fSArnaldo Carvalho de Melo 72e55d912fSArnaldo Carvalho de Melo static struct ctl_table dccp_table[] = { 73e55d912fSArnaldo Carvalho de Melo { 74e55d912fSArnaldo Carvalho de Melo .ctl_name = NET_DCCP_DEFAULT, 75e55d912fSArnaldo Carvalho de Melo .procname = "default", 76e55d912fSArnaldo Carvalho de Melo .mode = 0555, 77e55d912fSArnaldo Carvalho de Melo .child = dccp_default_table, 78e55d912fSArnaldo Carvalho de Melo }, 79e55d912fSArnaldo Carvalho de Melo { .ctl_name = 0, }, 80e55d912fSArnaldo Carvalho de Melo }; 81e55d912fSArnaldo Carvalho de Melo 82e55d912fSArnaldo Carvalho de Melo static struct ctl_table dccp_dir_table[] = { 83e55d912fSArnaldo Carvalho de Melo { 84e55d912fSArnaldo Carvalho de Melo .ctl_name = NET_DCCP, 85e55d912fSArnaldo Carvalho de Melo .procname = "dccp", 86e55d912fSArnaldo Carvalho de Melo .mode = 0555, 87e55d912fSArnaldo Carvalho de Melo .child = dccp_table, 88e55d912fSArnaldo Carvalho de Melo }, 89e55d912fSArnaldo Carvalho de Melo { .ctl_name = 0, }, 90e55d912fSArnaldo Carvalho de Melo }; 91e55d912fSArnaldo Carvalho de Melo 92e55d912fSArnaldo Carvalho de Melo static struct ctl_table dccp_root_table[] = { 93e55d912fSArnaldo Carvalho de Melo { 94e55d912fSArnaldo Carvalho de Melo .ctl_name = CTL_NET, 95e55d912fSArnaldo Carvalho de Melo .procname = "net", 96e55d912fSArnaldo Carvalho de Melo .mode = 0555, 97e55d912fSArnaldo Carvalho de Melo .child = dccp_dir_table, 98e55d912fSArnaldo Carvalho de Melo }, 99e55d912fSArnaldo Carvalho de Melo { .ctl_name = 0, }, 100e55d912fSArnaldo Carvalho de Melo }; 101e55d912fSArnaldo Carvalho de Melo 102e55d912fSArnaldo Carvalho de Melo static struct ctl_table_header *dccp_table_header; 103e55d912fSArnaldo Carvalho de Melo 104e55d912fSArnaldo Carvalho de Melo int __init dccp_sysctl_init(void) 105e55d912fSArnaldo Carvalho de Melo { 106e55d912fSArnaldo Carvalho de Melo dccp_table_header = register_sysctl_table(dccp_root_table, 1); 107e55d912fSArnaldo Carvalho de Melo 108e55d912fSArnaldo Carvalho de Melo return dccp_table_header != NULL ? 0 : -ENOMEM; 109e55d912fSArnaldo Carvalho de Melo } 110e55d912fSArnaldo Carvalho de Melo 111e55d912fSArnaldo Carvalho de Melo void dccp_sysctl_exit(void) 112e55d912fSArnaldo Carvalho de Melo { 113e55d912fSArnaldo Carvalho de Melo if (dccp_table_header != NULL) { 114e55d912fSArnaldo Carvalho de Melo unregister_sysctl_table(dccp_table_header); 115e55d912fSArnaldo Carvalho de Melo dccp_table_header = NULL; 116e55d912fSArnaldo Carvalho de Melo } 117e55d912fSArnaldo Carvalho de Melo } 118