⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nf_sysctl.c

📁 linux 内核源代码
💻 C
字号:
/* nf_sysctl.c	netfilter sysctl registration/unregistation * * Copyright (c) 2006 Patrick McHardy <kaber@trash.net> */#include <linux/module.h>#include <linux/sysctl.h>#include <linux/string.h>#include <linux/slab.h>static voidpath_free(struct ctl_table *path, struct ctl_table *table){	struct ctl_table *t, *next;	for (t = path; t != NULL && t != table; t = next) {		next = t->child;		kfree(t);	}}static struct ctl_table *path_dup(struct ctl_table *path, struct ctl_table *table){	struct ctl_table *t, *last = NULL, *tmp;	for (t = path; t != NULL; t = t->child) {		/* twice the size since path elements are terminated by an		 * empty element */		tmp = kmemdup(t, 2 * sizeof(*t), GFP_KERNEL);		if (tmp == NULL) {			if (last != NULL)				path_free(path, table);			return NULL;		}		if (last != NULL)			last->child = tmp;		else			path = tmp;		last = tmp;	}	if (last != NULL)		last->child = table;	else		path = table;	return path;}struct ctl_table_header *nf_register_sysctl_table(struct ctl_table *path, struct ctl_table *table){	struct ctl_table_header *header;	path = path_dup(path, table);	if (path == NULL)		return NULL;	header = register_sysctl_table(path);	if (header == NULL)		path_free(path, table);	return header;}EXPORT_SYMBOL_GPL(nf_register_sysctl_table);voidnf_unregister_sysctl_table(struct ctl_table_header *header,			   struct ctl_table *table){	struct ctl_table *path = header->ctl_table;	unregister_sysctl_table(header);	path_free(path, table);}EXPORT_SYMBOL_GPL(nf_unregister_sysctl_table);/* net/netfilter */static struct ctl_table nf_net_netfilter_table[] = {	{		.ctl_name	= NET_NETFILTER,		.procname	= "netfilter",		.mode		= 0555,	},	{		.ctl_name	= 0	}};struct ctl_table nf_net_netfilter_sysctl_path[] = {	{		.ctl_name	= CTL_NET,		.procname	= "net",		.mode		= 0555,		.child		= nf_net_netfilter_table,	},	{		.ctl_name	= 0	}};EXPORT_SYMBOL_GPL(nf_net_netfilter_sysctl_path);/* net/ipv4/netfilter */static struct ctl_table nf_net_ipv4_netfilter_table[] = {	{		.ctl_name	= NET_IPV4_NETFILTER,		.procname	= "netfilter",		.mode		= 0555,	},	{		.ctl_name	= 0	}};static struct ctl_table nf_net_ipv4_table[] = {	{		.ctl_name	= NET_IPV4,		.procname	= "ipv4",		.mode		= 0555,		.child		= nf_net_ipv4_netfilter_table,	},	{		.ctl_name	= 0	}};struct ctl_table nf_net_ipv4_netfilter_sysctl_path[] = {	{		.ctl_name	= CTL_NET,		.procname	= "net",		.mode		= 0555,		.child		= nf_net_ipv4_table,	},	{		.ctl_name	= 0	}};EXPORT_SYMBOL_GPL(nf_net_ipv4_netfilter_sysctl_path);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -