Remove NPROTO.
Subsystems (5)
PATCH 1/1 Remove NPROTO.
NPROTO seems redundant; it's equal to AF_MAX/PF_MAX.
It's fairly simple to find all users and replace them appropriately.
include/linux/net.h +1 -2
@@ -19,14 +19,13 @@#define _LINUX_NET_H#include <linux/wait.h> +#include <linux/socket.h> #include <asm/socket.h> struct poll_table_struct ;struct pipe_inode_info ;struct inode ;struct net ; - -#define NPROTO 34/* should be enough for now.. */ #define SYS_SOCKET 1/* sys_socket(2) */ #define SYS_BIND 2/* sys_bind(2) */
include/linux/netfilter.h +2 -2
@@ -128,7 +128,7 @@ extern struct ctl_path nf_net_ipv4_netfiextern struct ctl_path nf_net_ipv4_netfilter_sysctl_path[];#endif /* CONFIG_SYSCTL */ -extern struct list_head nf_hooks[NPROTO ][NF_MAX_HOOKS ]; +extern struct list_head nf_hooks[AF_MAX ][NF_MAX_HOOKS ]; int nf_hook_slow(int pf, unsigned int hook, struct sk_buff *skb, struct net_device *indev, struct net_device *outdev,
@@ -232,7 +232,7 @@ struct nf_afinfo {int route_key_size; }; -extern const struct nf_afinfo *nf_afinfo[NPROTO ]; +extern const struct nf_afinfo *nf_afinfo[AF_MAX ];static inline const struct nf_afinfo *nf_get_afinfo (unsigned short family) {return rcu_dereference (nf_afinfo[family]);
include/net/netns/x_tables.h +1 -1
@@ -5,6 +5,6 @@#include <linux/net.h> struct netns_xt { -struct list_head tables[NPROTO ]; +struct list_head tables[AF_MAX ]; };#endif
net/core/dev.c +3 -3
@@ -2247,7 +2247,7 @@ softnet_break: goto out; } -static gifconf_func_t * gifconf_list [NPROTO ]; +static gifconf_func_t * gifconf_list [AF_MAX ];/** * register_gifconf - register a SIOCGIF handler
@@ -2260,7 +2260,7 @@ static gifconf_func_t * gifconf_list [NP*/ int register_gifconf (unsigned int family,gifconf_func_t * gifconf) { -if (family >=NPROTO ) +if (family >=AF_MAX )return -EINVAL ; gifconf_list[family] = gifconf;return 0 ;
@@ -2336,7 +2336,7 @@ static int dev_ifconf(struct net *net, c total =0 ;for_each_netdev (net, dev) { -for (i =0 ; i <NPROTO ; i++) { +for (i =0 ; i <AF_MAX ; i++) {if (gifconf_list[i]) {int done;if (!pos)
net/core/rtnetlink.c +6 -6
@@ -82,7 +82,7 @@ int rtnl_trylock(void)return mutex_trylock (&rtnl_mutex); } -static struct rtnl_link *rtnl_msg_handlers[NPROTO ]; +static struct rtnl_link *rtnl_msg_handlers[PF_MAX ];static inline int rtm_msgindex (int msgtype) {
@@ -143,7 +143,7 @@ int __rtnl_register(int protocol, int msstruct rtnl_link *tab;int msgindex; -BUG_ON (protocol <0 || protocol >=NPROTO ); +BUG_ON (protocol <0 || protocol >=PF_MAX ); msgindex =rtm_msgindex (msgtype); tab = rtnl_msg_handlers[protocol];
@@ -197,7 +197,7 @@ int rtnl_unregister(int protocol, int ms {int msgindex; -BUG_ON (protocol <0 || protocol >=NPROTO ); +BUG_ON (protocol <0 || protocol >=PF_MAX ); msgindex =rtm_msgindex (msgtype);if (rtnl_msg_handlers[protocol] ==NULL )
@@ -220,7 +220,7 @@ EXPORT_SYMBOL_GPL(rtnl_unregister);*/ void rtnl_unregister_all (int protocol) { -BUG_ON (protocol <0 || protocol >=NPROTO ); +BUG_ON (protocol <0 || protocol >=PF_MAX );kfree (rtnl_msg_handlers[protocol]); rtnl_msg_handlers[protocol] =NULL ;
@@ -1179,7 +1179,7 @@ static int rtnl_dump_all(struct sk_buffif (s_idx ==0 ) s_idx =1 ; -for (idx=1 ; idx<NPROTO ; idx++) { +for (idx=1 ; idx<PF_MAX ; idx++) {int type = cb->nlh->nlmsg_type-RTM_BASE ;if (idx < s_idx || idx ==PF_PACKET )continue ;
@@ -1246,7 +1246,7 @@ static int rtnetlink_rcv_msg(struct sk_breturn 0 ; family = ((struct rtgenmsg *)NLMSG_DATA (nlh))->rtgen_family; -if (family >=NPROTO ) +if (family >=PF_MAX )return -EAFNOSUPPORT ; sz_idx = type>>2 ;
net/netfilter/core.c +3 -3
@@ -26,7 +26,7 @@static DEFINE_MUTEX (afinfo_mutex); -const struct nf_afinfo *nf_afinfo[NPROTO ]__read_mostly ; +const struct nf_afinfo *nf_afinfo[AF_MAX ]__read_mostly ;EXPORT_SYMBOL (nf_afinfo);int nf_register_afinfo (const struct nf_afinfo *afinfo)
@@ -51,7 +51,7 @@ void nf_unregister_afinfo(const struct n }EXPORT_SYMBOL_GPL (nf_unregister_afinfo); -struct list_head nf_hooks[NPROTO ][NF_MAX_HOOKS ]__read_mostly ; +struct list_head nf_hooks[AF_MAX ][NF_MAX_HOOKS ]__read_mostly ;EXPORT_SYMBOL (nf_hooks);static DEFINE_MUTEX (nf_hook_mutex);
@@ -256,7 +256,7 @@ void __init netfilter_init(void)void __init netfilter_init (void ) {int i, h; -for (i =0 ; i <NPROTO ; i++) { +for (i =0 ; i <AF_MAX ; i++) {for (h =0 ; h <NF_MAX_HOOKS ; h++)INIT_LIST_HEAD (&nf_hooks[i][h]); }
net/netfilter/nf_log.c +6 -6
@@ -15,7 +15,7 @@#define NF_LOG_PREFIXLEN 128 -static const struct nf_logger *nf_loggers[NPROTO ]__read_mostly ; +static const struct nf_logger *nf_loggers[PF_MAX ]__read_mostly ;static DEFINE_MUTEX (nf_log_mutex);/* return EBUSY if somebody else is registered, EEXIST if the same logger
@@ -24,7 +24,7 @@ int nf_log_register(int pf, const struct {int ret; -if (pf >=NPROTO ) +if (pf >=PF_MAX )return -EINVAL ;/* Any setup of logging members must be done before
@@ -47,7 +47,7 @@ EXPORT_SYMBOL(nf_log_register);void nf_log_unregister_pf (int pf) { -if (pf >=NPROTO ) +if (pf >=PF_MAX )return ;mutex_lock (&nf_log_mutex);rcu_assign_pointer (nf_loggers[pf],NULL );
@@ -63,7 +63,7 @@ void nf_log_unregister(const struct nf_lint i;mutex_lock (&nf_log_mutex); -for (i =0 ; i <NPROTO ; i++) { +for (i =0 ; i <PF_MAX ; i++) {if (nf_loggers[i] == logger)rcu_assign_pointer (nf_loggers[i],NULL ); }
@@ -107,7 +107,7 @@ static void *seq_start(struct seq_file * {rcu_read_lock (); -if (*pos >=NPROTO ) +if (*pos >=PF_MAX )return NULL ;return pos;
@@ -117,7 +117,7 @@ static void *seq_next(struct seq_file *s { (*pos)++; -if (*pos >=NPROTO ) +if (*pos >=PF_MAX )return NULL ;return pos;
net/netfilter/nf_queue.c +6 -6
@@ -16,7 +16,7 @@* long term mutex. The handler must provide an an outfn() to accept packets * for queueing and must reinject all packets it receives, no matter what. */ -static const struct nf_queue_handler *queue_handler[NPROTO ]; +static const struct nf_queue_handler *queue_handler[PF_MAX ];static DEFINE_MUTEX (queue_handler_mutex);
@@ -26,7 +26,7 @@ int nf_register_queue_handler(int pf, co {int ret; -if (pf >=NPROTO ) +if (pf >=PF_MAX )return -EINVAL ;mutex_lock (&queue_handler_mutex);
@@ -47,7 +47,7 @@ EXPORT_SYMBOL(nf_register_queue_handler)/* The caller must flush their queue before this */ int nf_unregister_queue_handler (int pf,const struct nf_queue_handler *qh) { -if (pf >=NPROTO ) +if (pf >=PF_MAX )return -EINVAL ;mutex_lock (&queue_handler_mutex);
@@ -70,7 +70,7 @@ void nf_unregister_queue_handlers(constint pf;mutex_lock (&queue_handler_mutex); -for (pf =0 ; pf <NPROTO ; pf++) { +for (pf =0 ; pf <PF_MAX ; pf++) {if (queue_handler[pf] == qh)rcu_assign_pointer (queue_handler[pf],NULL ); }
@@ -285,7 +285,7 @@ EXPORT_SYMBOL(nf_reinject);#ifdef CONFIG_PROC_FS static void *seq_start (struct seq_file *seq,loff_t *pos) { -if (*pos >=NPROTO ) +if (*pos >=PF_MAX )return NULL ;return pos;
@@ -295,7 +295,7 @@ static void *seq_next(struct seq_file *s { (*pos)++; -if (*pos >=NPROTO ) +if (*pos >=PF_MAX )return NULL ;return pos;
net/netfilter/x_tables.c +5 -5
@@ -58,7 +58,7 @@ static struct xt_af *xt; #define duprintf(format, args...)#endif -static const char *xt_prefix[NPROTO ] = { +static const char *xt_prefix[AF_MAX ] = { [AF_INET ] ="ip" , [AF_INET6 ] ="ip6" , [NF_ARP ] ="arp" ,
@@ -929,7 +929,7 @@ int xt_proto_init(struct net *net, int astruct proc_dir_entry *proc;#endif -if (af >=NPROTO ) +if (af >=AF_MAX )return -EINVAL ;
@@ -999,7 +999,7 @@ static int __net_init xt_net_init(struct {int i; -for (i =0 ; i <NPROTO ; i++) +for (i =0 ; i <ARRAY_SIZE (net->xt.tables); i++)INIT_LIST_HEAD (&net->xt.tables[i]);return 0 ; }
@@ -1012,11 +1012,11 @@ static int __init xt_init(void) {int i, rv; - xt =kmalloc (sizeof (struct xt_af ) *NPROTO ,GFP_KERNEL ); + xt =kmalloc (sizeof (struct xt_af ) *AF_MAX ,GFP_KERNEL );if (!xt)return -ENOMEM ; -for (i =0 ; i <NPROTO ; i++) { +for (i =0 ; i <AF_MAX ; i++) {mutex_init (&xt[i].mutex);#ifdef CONFIG_COMPAT mutex_init (&xt[i].compat_mutex);
net/socket.c +6 -6
@@ -145,7 +145,7 @@ static const struct file_operations sock*/ static DEFINE_SPINLOCK (net_family_lock); -static const struct net_proto_family *net_families[NPROTO ]__read_mostly ; +static const struct net_proto_family *net_families[PF_MAX ]__read_mostly ;/* * Statistics counters of the socket lists
@@ -1101,7 +1101,7 @@ static int __sock_create(struct net *net/* * Check protocol is in range */ -if (family <0 || family >=NPROTO ) +if (family <0 || family >=PF_MAX )return -EAFNOSUPPORT ;if (type <0 || type >=SOCK_MAX )return -EINVAL ;
@@ -2110,9 +2110,9 @@ int sock_register(const struct net_proto {int err; -if (ops->family >=NPROTO ) { -printk (KERN_CRIT "protocol %d >= NPROTO(%d)\n" , ops->family, -NPROTO ); +if (ops->family >=PF_MAX ) { +printk (KERN_CRIT "protocol %d >= PF_MAX(%d)\n" , ops->family, +PF_MAX );return -ENOBUFS ; }
@@ -2144,7 +2144,7 @@ int sock_register(const struct net_proto*/ void sock_unregister (int family) { -BUG_ON (family <0 || family >=NPROTO ); +BUG_ON (family <0 || family >=PF_MAX );spin_lock (&net_family_lock); net_families[family] =NULL ;
net/xfrm/xfrm_policy.c +4 -4
@@ -50,7 +50,7 @@ EXPORT_SYMBOL(xfrm_policy_count);EXPORT_SYMBOL (xfrm_policy_count);static DEFINE_RWLOCK (xfrm_policy_afinfo_lock); -static struct xfrm_policy_afinfo *xfrm_policy_afinfo[NPROTO ]; +static struct xfrm_policy_afinfo *xfrm_policy_afinfo[AF_MAX ];static struct kmem_cache *xfrm_dst_cache__read_mostly ;
@@ -2238,7 +2238,7 @@ int xfrm_policy_register_afinfo(struct xint err =0 ;if (unlikely (afinfo ==NULL ))return -EINVAL ; -if (unlikely (afinfo->family >=NPROTO )) +if (unlikely (afinfo->family >=AF_MAX ))return -EAFNOSUPPORT ;write_lock_bh (&xfrm_policy_afinfo_lock);if (unlikely (xfrm_policy_afinfo[afinfo->family] !=NULL ))
@@ -2267,7 +2267,7 @@ int xfrm_policy_unregister_afinfo(structint err =0 ;if (unlikely (afinfo ==NULL ))return -EINVAL ; -if (unlikely (afinfo->family >=NPROTO )) +if (unlikely (afinfo->family >=AF_MAX ))return -EAFNOSUPPORT ;write_lock_bh (&xfrm_policy_afinfo_lock);if (likely (xfrm_policy_afinfo[afinfo->family] !=NULL )) {
@@ -2291,7 +2291,7 @@ static struct xfrm_policy_afinfo *xfrm_pstatic struct xfrm_policy_afinfo *xfrm_policy_get_afinfo (unsigned short family) {struct xfrm_policy_afinfo *afinfo; -if (unlikely (family >=NPROTO )) +if (unlikely (family >=AF_MAX ))return NULL ;read_lock (&xfrm_policy_afinfo_lock); afinfo = xfrm_policy_afinfo[family];
net/xfrm/xfrm_state.c +5 -5
@@ -187,7 +187,7 @@ EXPORT_SYMBOL(km_waitq);EXPORT_SYMBOL (km_waitq);static DEFINE_RWLOCK (xfrm_state_afinfo_lock); -static struct xfrm_state_afinfo *xfrm_state_afinfo[NPROTO ]; +static struct xfrm_state_afinfo *xfrm_state_afinfo[AF_MAX ];static struct work_struct xfrm_state_gc_work;static HLIST_HEAD (xfrm_state_gc_list);
@@ -201,7 +201,7 @@ static struct xfrm_state_afinfo *xfrm_ststatic struct xfrm_state_afinfo *xfrm_state_lock_afinfo (unsigned int family) {struct xfrm_state_afinfo *afinfo; -if (unlikely (family >=NPROTO )) +if (unlikely (family >=AF_MAX ))return NULL ;write_lock_bh (&xfrm_state_afinfo_lock); afinfo = xfrm_state_afinfo[family];
@@ -1863,7 +1863,7 @@ int xfrm_state_register_afinfo(struct xfint err =0 ;if (unlikely (afinfo ==NULL ))return -EINVAL ; -if (unlikely (afinfo->family >=NPROTO )) +if (unlikely (afinfo->family >=AF_MAX ))return -EAFNOSUPPORT ;write_lock_bh (&xfrm_state_afinfo_lock);if (unlikely (xfrm_state_afinfo[afinfo->family] !=NULL ))
@@ -1880,7 +1880,7 @@ int xfrm_state_unregister_afinfo(structint err =0 ;if (unlikely (afinfo ==NULL ))return -EINVAL ; -if (unlikely (afinfo->family >=NPROTO )) +if (unlikely (afinfo->family >=AF_MAX ))return -EAFNOSUPPORT ;write_lock_bh (&xfrm_state_afinfo_lock);if (likely (xfrm_state_afinfo[afinfo->family] !=NULL )) {
@@ -1897,7 +1897,7 @@ static struct xfrm_state_afinfo *xfrm_ststatic struct xfrm_state_afinfo *xfrm_state_get_afinfo (unsigned int family) {struct xfrm_state_afinfo *afinfo; -if (unlikely (family >=NPROTO )) +if (unlikely (family >=AF_MAX ))return NULL ;read_lock (&xfrm_state_afinfo_lock); afinfo = xfrm_state_afinfo[family];
David Miller
maintainerFrom: Rusty Russell <[email protected]>
Date: Wed, 12 Mar 2008 12:24:25 +1100
Quoted 5 lines
NPROTO seems redundant; it's equal to AF_MAX/PF_MAX.
It's fairly simple to find all users and replace them appropriately.
Signed-off-by Rusty Russell <[email protected]>
Redundant, but exported to userspace for about 15 years.
We'd be wise to not remove it.
Quoted 5 lines · On Wednesday 12 March 2008 15:14:41 David Miller wrote:
From: Rusty Russell <[email protected]>
Date: Wed, 12 Mar 2008 12:24:25 +1100Quoted 2 lines
NPROTO seems redundant; it's equal to AF_MAX/PF_MAX.
Quoted 7 lines
Quoted 3 lines
It's fairly simple to find all users and replace them appropriately.
Signed-off-by Rusty Russell <[email protected]>Redundant, but exported to userspace for about 15 years.
We'd be wise to not remove it.
Thanks. Should we #define NPROTO AF_MAX then?
Rusty.
David Miller
maintainerFrom: Rusty Russell <[email protected]>
Date: Wed, 12 Mar 2008 18:34:26 +1100
Quoted 6 lines · On Wednesday 12 March 2008 15:14:41 David Miller wrote:
Quoted 3 lines
Redundant, but exported to userspace for about 15 years.
We'd be wise to not remove it.
Thanks. Should we #define NPROTO
AF_MAXthen?
I can't see a reason why not.
PATCH 1/1 NPROTO is redundant; it's equal to AF_MAX/PF_MAX.
DaveM pointed out NPROTO exposed to userspace, so keep it around, just make sure it stays in sync.
include/linux/net.h +2 -1
@@ -19,14 +19,15 @@#define _LINUX_NET_H#include <linux/wait.h> +#include <linux/socket.h> #include <asm/socket.h> struct poll_table_struct ;struct pipe_inode_info ;struct inode ;struct net ; -#define NPROTO 34/* should be enough for now.. */ +#define NPROTO AF_MAX#define SYS_SOCKET 1/* sys_socket(2) */ #define SYS_BIND 2/* sys_bind(2) */
Re: [PATCH] NPROTO is redundant; it's equal to AF_MAX/PF_MAX.
From: Rusty Russell <[email protected]>
Date: Thu, 13 Mar 2008 10:50:13 +1100
Quoted 4 lines
DaveM pointed out NPROTO exposed to userspace, so keep it around, just make sure it stays in sync.
Signed-off-by Rusty Russell <[email protected]>
Applied to net-2.6.26, thanks Rusty.