Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 22206
b: refs/heads/master
c: e55d912
h: refs/heads/master
v: v3
  • Loading branch information
Arnaldo Carvalho de Melo authored and David S. Miller committed Mar 21, 2006
1 parent b9e869f commit a690463
Show file tree
Hide file tree
Showing 7 changed files with 177 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 04e2661e9c00386412b64612549cf24c8baef67c
refs/heads/master: e55d912f5b75723159348a7fc7692f869a86636a
16 changes: 16 additions & 0 deletions trunk/include/linux/sysctl.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ enum
NET_SCTP=17,
NET_LLC=18,
NET_NETFILTER=19,
NET_DCCP=20,
};

/* /proc/sys/kernel/random */
Expand Down Expand Up @@ -571,6 +572,21 @@ enum {
__NET_NEIGH_MAX
};

/* /proc/sys/net/dccp */
enum {
NET_DCCP_DEFAULT=1,
};

/* /proc/sys/net/dccp/default */
enum {
NET_DCCP_DEFAULT_SEQ_WINDOW = 1,
NET_DCCP_DEFAULT_RX_CCID = 2,
NET_DCCP_DEFAULT_TX_CCID = 3,
NET_DCCP_DEFAULT_ACK_RATIO = 4,
NET_DCCP_DEFAULT_SEND_ACKVEC = 5,
NET_DCCP_DEFAULT_SEND_NDP = 6,
};

/* /proc/sys/net/ipx */
enum {
NET_IPX_PPROP_BROADCASTING=1,
Expand Down
2 changes: 2 additions & 0 deletions trunk/net/dccp/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ dccp-$(CONFIG_IP_DCCP_ACKVEC) += ackvec.o

obj-$(CONFIG_INET_DCCP_DIAG) += dccp_diag.o

dccp-$(CONFIG_SYSCTL) += sysctl.o

dccp_diag-y := diag.o

obj-y += ccids/
14 changes: 14 additions & 0 deletions trunk/net/dccp/dccp.h
Original file line number Diff line number Diff line change
Expand Up @@ -433,4 +433,18 @@ static inline void timeval_sub_usecs(struct timeval *tv,
}
}

#ifdef CONFIG_SYSCTL
extern int dccp_sysctl_init(void);
extern void dccp_sysctl_exit(void);
#else
static inline int dccp_sysctl_init(void)
{
return 0;
}

static inline void dccp_sysctl_exit(void)
{
}
#endif

#endif /* _DCCP_H */
22 changes: 12 additions & 10 deletions trunk/net/dccp/options.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,21 @@
#include "dccp.h"
#include "feat.h"

/* stores the default values for new connection. may be changed with sysctl */
static const struct dccp_options dccpo_default_values = {
.dccpo_sequence_window = DCCPF_INITIAL_SEQUENCE_WINDOW,
.dccpo_rx_ccid = DCCPF_INITIAL_CCID,
.dccpo_tx_ccid = DCCPF_INITIAL_CCID,
.dccpo_ack_ratio = DCCPF_INITIAL_ACK_RATIO,
.dccpo_send_ack_vector = DCCPF_INITIAL_SEND_ACK_VECTOR,
.dccpo_send_ndp_count = DCCPF_INITIAL_SEND_NDP_COUNT,
};
int dccp_feat_default_sequence_window = DCCPF_INITIAL_SEQUENCE_WINDOW;
int dccp_feat_default_rx_ccid = DCCPF_INITIAL_CCID;
int dccp_feat_default_tx_ccid = DCCPF_INITIAL_CCID;
int dccp_feat_default_ack_ratio = DCCPF_INITIAL_ACK_RATIO;
int dccp_feat_default_send_ack_vector = DCCPF_INITIAL_SEND_ACK_VECTOR;
int dccp_feat_default_send_ndp_count = DCCPF_INITIAL_SEND_NDP_COUNT;

void dccp_options_init(struct dccp_options *dccpo)
{
memcpy(dccpo, &dccpo_default_values, sizeof(*dccpo));
dccpo->dccpo_sequence_window = dccp_feat_default_sequence_window;
dccpo->dccpo_rx_ccid = dccp_feat_default_rx_ccid;
dccpo->dccpo_tx_ccid = dccp_feat_default_tx_ccid;
dccpo->dccpo_ack_ratio = dccp_feat_default_ack_ratio;
dccpo->dccpo_send_ack_vector = dccp_feat_default_send_ack_vector;
dccpo->dccpo_send_ndp_count = dccp_feat_default_send_ndp_count;
}

static u32 dccp_decode_value_var(const unsigned char *bf, const u8 len)
Expand Down
9 changes: 8 additions & 1 deletion trunk/net/dccp/proto.c
Original file line number Diff line number Diff line change
Expand Up @@ -934,11 +934,17 @@ static int __init dccp_init(void)
if (rc)
goto out_unregister_protosw;

rc = dccp_ctl_sock_init();
rc = dccp_sysctl_init();
if (rc)
goto out_ackvec_exit;

rc = dccp_ctl_sock_init();
if (rc)
goto out_sysctl_exit;
out:
return rc;
out_sysctl_exit:
dccp_sysctl_exit();
out_ackvec_exit:
dccp_ackvec_exit();
out_unregister_protosw:
Expand Down Expand Up @@ -983,6 +989,7 @@ static void __exit dccp_fini(void)
kmem_cache_destroy(dccp_hashinfo.bind_bucket_cachep);
proto_unregister(&dccp_prot);
dccp_ackvec_exit();
dccp_sysctl_exit();
}

module_init(dccp_init);
Expand Down
124 changes: 124 additions & 0 deletions trunk/net/dccp/sysctl.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
/*
* net/dccp/sysctl.c
*
* An implementation of the DCCP protocol
* Arnaldo Carvalho de Melo <acme@mandriva.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License v2
* as published by the Free Software Foundation.
*/

#include <linux/config.h>
#include <linux/mm.h>
#include <linux/sysctl.h>

#ifndef CONFIG_SYSCTL
#error This file should not be compiled without CONFIG_SYSCTL defined
#endif

extern int dccp_feat_default_sequence_window;
extern int dccp_feat_default_rx_ccid;
extern int dccp_feat_default_tx_ccid;
extern int dccp_feat_default_ack_ratio;
extern int dccp_feat_default_send_ack_vector;
extern int dccp_feat_default_send_ndp_count;

static struct ctl_table dccp_default_table[] = {
{
.ctl_name = NET_DCCP_DEFAULT_SEQ_WINDOW,
.procname = "seq_window",
.data = &dccp_feat_default_sequence_window,
.maxlen = sizeof(dccp_feat_default_sequence_window),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.ctl_name = NET_DCCP_DEFAULT_RX_CCID,
.procname = "rx_ccid",
.data = &dccp_feat_default_rx_ccid,
.maxlen = sizeof(dccp_feat_default_rx_ccid),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.ctl_name = NET_DCCP_DEFAULT_TX_CCID,
.procname = "tx_ccid",
.data = &dccp_feat_default_tx_ccid,
.maxlen = sizeof(dccp_feat_default_tx_ccid),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.ctl_name = NET_DCCP_DEFAULT_ACK_RATIO,
.procname = "ack_ratio",
.data = &dccp_feat_default_ack_ratio,
.maxlen = sizeof(dccp_feat_default_ack_ratio),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.ctl_name = NET_DCCP_DEFAULT_SEND_ACKVEC,
.procname = "send_ackvec",
.data = &dccp_feat_default_send_ack_vector,
.maxlen = sizeof(dccp_feat_default_send_ack_vector),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{
.ctl_name = NET_DCCP_DEFAULT_SEND_NDP,
.procname = "send_ndp",
.data = &dccp_feat_default_send_ndp_count,
.maxlen = sizeof(dccp_feat_default_send_ndp_count),
.mode = 0644,
.proc_handler = proc_dointvec,
},
{ .ctl_name = 0, }
};

static struct ctl_table dccp_table[] = {
{
.ctl_name = NET_DCCP_DEFAULT,
.procname = "default",
.mode = 0555,
.child = dccp_default_table,
},
{ .ctl_name = 0, },
};

static struct ctl_table dccp_dir_table[] = {
{
.ctl_name = NET_DCCP,
.procname = "dccp",
.mode = 0555,
.child = dccp_table,
},
{ .ctl_name = 0, },
};

static struct ctl_table dccp_root_table[] = {
{
.ctl_name = CTL_NET,
.procname = "net",
.mode = 0555,
.child = dccp_dir_table,
},
{ .ctl_name = 0, },
};

static struct ctl_table_header *dccp_table_header;

int __init dccp_sysctl_init(void)
{
dccp_table_header = register_sysctl_table(dccp_root_table, 1);

return dccp_table_header != NULL ? 0 : -ENOMEM;
}

void dccp_sysctl_exit(void)
{
if (dccp_table_header != NULL) {
unregister_sysctl_table(dccp_table_header);
dccp_table_header = NULL;
}
}

0 comments on commit a690463

Please sign in to comment.