lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 14 Aug 2012 23:20:49 -0400
From:	Vlad Yasevich <vyasevich@...il.com>
To:	"Eric W. Biederman" <ebiederm@...ssion.com>
CC:	David Miller <davem@...emloft.net>, linux-sctp@...r.kernel.org,
	netdev@...r.kernel.org, linux-kernel@...r.kernel.org,
	Jan Ariyasu <jan.ariyasu@...com>,
	Jan Ariyasu <jan.ariyasu@...il.com>,
	Neil Horman <nhorman@...driver.com>,
	Thomas Graf <tgraf@...radead.org>, Xi Wang <xi.wang@...il.com>
Subject: Re: [PATCH net-next 1/7] sctp: Add infrastructure for per net sysctls

On 08/07/2012 01:23 PM, Eric W. Biederman wrote:
>
> Start with an empty sctp_net_table that will be populated as the various
> tunable sysctls are made per net.
>
> Signed-off-by: "Eric W. Biederman" <ebiederm@...ssion.com>

Acked-by: Vlad Yasevich <vyasevich@...il.com>

> ---
>   include/net/netns/sctp.h |    6 +++++-
>   include/net/sctp/sctp.h  |    4 ++++
>   net/sctp/protocol.c      |    7 +++++++
>   net/sctp/sysctl.c        |   21 +++++++++++++++++++++
>   4 files changed, 37 insertions(+), 1 deletions(-)
>
> diff --git a/include/net/netns/sctp.h b/include/net/netns/sctp.h
> index 06ccddf..9576b60 100644
> --- a/include/net/netns/sctp.h
> +++ b/include/net/netns/sctp.h
> @@ -4,6 +4,7 @@
>   struct sock;
>   struct proc_dir_entry;
>   struct sctp_mib;
> +struct ctl_table_header;
>
>   struct netns_sctp {
>   	DEFINE_SNMP_STAT(struct sctp_mib, sctp_statistics);
> @@ -11,7 +12,9 @@ struct netns_sctp {
>   #ifdef CONFIG_PROC_FS
>   	struct proc_dir_entry *proc_net_sctp;
>   #endif
> -
> +#ifdef CONFIG_SYSCTL
> +	struct ctl_table_header *sysctl_header;
> +#endif
>   	/* This is the global socket data structure used for responding to
>   	 * the Out-of-the-blue (OOTB) packets.  A control sock will be created
>   	 * for this socket at the initialization time.
> @@ -32,6 +35,7 @@ struct netns_sctp {
>
>   	/* Lock that protects the local_addr_list writers */
>   	spinlock_t local_addr_lock;
> +
>   };
>
>   #endif /* __NETNS_SCTP_H__ */
> diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h
> index b0e6fe5..15037e7 100644
> --- a/include/net/sctp/sctp.h
> +++ b/include/net/sctp/sctp.h
> @@ -375,9 +375,13 @@ static inline void sctp_dbg_objcnt_exit(void) { return; }
>   #if defined CONFIG_SYSCTL
>   void sctp_sysctl_register(void);
>   void sctp_sysctl_unregister(void);
> +int sctp_sysctl_net_register(struct net *net);
> +void sctp_sysctl_net_unregister(struct net *net);
>   #else
>   static inline void sctp_sysctl_register(void) { return; }
>   static inline void sctp_sysctl_unregister(void) { return; }
> +static inline int sctp_sysctl_net_register(struct net *net) { return 0; }
> +static inline void sctp_sysctl_net_unregister(struct net *net) { return; }
>   #endif
>
>   /* Size of Supported Address Parameter for 'x' address types. */
> diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
> index 69bdc72..de25d9c 100644
> --- a/net/sctp/protocol.c
> +++ b/net/sctp/protocol.c
> @@ -1169,6 +1169,10 @@ static int sctp_net_init(struct net *net)
>   {
>   	int status;
>
> +	status = sctp_sysctl_net_register(net);
> +	if (status)
> +		goto err_sysctl_register;
> +
>   	/* Allocate and initialise sctp mibs.  */
>   	status = init_sctp_mibs(net);
>   	if (status)
> @@ -1205,6 +1209,8 @@ err_ctl_sock_init:
>   err_init_proc:
>   	cleanup_sctp_mibs(net);
>   err_init_mibs:
> +	sctp_sysctl_net_unregister(net);
> +err_sysctl_register:
>   	return status;
>   }
>
> @@ -1219,6 +1225,7 @@ static void sctp_net_exit(struct net *net)
>
>   	sctp_proc_exit(net);
>   	cleanup_sctp_mibs(net);
> +	sctp_sysctl_net_unregister(net);
>   }
>
>   static struct pernet_operations sctp_net_ops = {
> diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
> index 2b2bfe9..7528d59 100644
> --- a/net/sctp/sysctl.c
> +++ b/net/sctp/sysctl.c
> @@ -284,6 +284,27 @@ static ctl_table sctp_table[] = {
>   	{ /* sentinel */ }
>   };
>
> +static ctl_table sctp_net_table[] = {
> +	{ /* sentinel */ }	
> +};
> +
> +int sctp_sysctl_net_register(struct net *net)
> +{
> +	struct ctl_table *table;
> +
> +	table = kmemdup(sctp_net_table, sizeof(sctp_net_table), GFP_KERNEL);
> +	if (!table)
> +		return -ENOMEM;
> +
> +	net->sctp.sysctl_header = register_net_sysctl(net, "net/sctp", table);
> +	return 0;
> +}
> +
> +void sctp_sysctl_net_unregister(struct net *net)
> +{
> +	unregister_net_sysctl_table(net->sctp.sysctl_header);
> +}
> +
>   static struct ctl_table_header * sctp_sysctl_header;
>
>   /* Sysctl registration.  */
>

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists