Commit d7480fd3 authored by WANG Cong's avatar WANG Cong Committed by David S. Miller

neigh: remove dynamic neigh table registration support

Currently there are only three neigh tables in the whole kernel:
arp table, ndisc table and decnet neigh table. What's more,
we don't support registering multiple tables per family.
Therefore we can just make these tables statically built-in.

Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b2e2f0c7
...@@ -220,6 +220,13 @@ struct neigh_table { ...@@ -220,6 +220,13 @@ struct neigh_table {
struct pneigh_entry **phash_buckets; struct pneigh_entry **phash_buckets;
}; };
enum {
NEIGH_ARP_TABLE = 0,
NEIGH_ND_TABLE = 1,
NEIGH_DN_TABLE = 2,
NEIGH_NR_TABLES,
};
static inline int neigh_parms_family(struct neigh_parms *p) static inline int neigh_parms_family(struct neigh_parms *p)
{ {
return p->tbl->family; return p->tbl->family;
...@@ -240,8 +247,8 @@ static inline void *neighbour_priv(const struct neighbour *n) ...@@ -240,8 +247,8 @@ static inline void *neighbour_priv(const struct neighbour *n)
#define NEIGH_UPDATE_F_ISROUTER 0x40000000 #define NEIGH_UPDATE_F_ISROUTER 0x40000000
#define NEIGH_UPDATE_F_ADMIN 0x80000000 #define NEIGH_UPDATE_F_ADMIN 0x80000000
void neigh_table_init(struct neigh_table *tbl); void neigh_table_init(int index, struct neigh_table *tbl);
int neigh_table_clear(struct neigh_table *tbl); int neigh_table_clear(int index, struct neigh_table *tbl);
struct neighbour *neigh_lookup(struct neigh_table *tbl, const void *pkey, struct neighbour *neigh_lookup(struct neigh_table *tbl, const void *pkey,
struct net_device *dev); struct net_device *dev);
struct neighbour *neigh_lookup_nodev(struct neigh_table *tbl, struct net *net, struct neighbour *neigh_lookup_nodev(struct neigh_table *tbl, struct net *net,
......
This diff is collapsed.
...@@ -591,7 +591,7 @@ static const struct file_operations dn_neigh_seq_fops = { ...@@ -591,7 +591,7 @@ static const struct file_operations dn_neigh_seq_fops = {
void __init dn_neigh_init(void) void __init dn_neigh_init(void)
{ {
neigh_table_init(&dn_neigh_table); neigh_table_init(NEIGH_DN_TABLE, &dn_neigh_table);
proc_create("decnet_neigh", S_IRUGO, init_net.proc_net, proc_create("decnet_neigh", S_IRUGO, init_net.proc_net,
&dn_neigh_seq_fops); &dn_neigh_seq_fops);
} }
...@@ -599,5 +599,5 @@ void __init dn_neigh_init(void) ...@@ -599,5 +599,5 @@ void __init dn_neigh_init(void)
void __exit dn_neigh_cleanup(void) void __exit dn_neigh_cleanup(void)
{ {
remove_proc_entry("decnet_neigh", init_net.proc_net); remove_proc_entry("decnet_neigh", init_net.proc_net);
neigh_table_clear(&dn_neigh_table); neigh_table_clear(NEIGH_DN_TABLE, &dn_neigh_table);
} }
...@@ -1292,7 +1292,7 @@ static int arp_proc_init(void); ...@@ -1292,7 +1292,7 @@ static int arp_proc_init(void);
void __init arp_init(void) void __init arp_init(void)
{ {
neigh_table_init(&arp_tbl); neigh_table_init(NEIGH_ARP_TABLE, &arp_tbl);
dev_add_pack(&arp_packet_type); dev_add_pack(&arp_packet_type);
arp_proc_init(); arp_proc_init();
......
...@@ -1763,7 +1763,7 @@ int __init ndisc_init(void) ...@@ -1763,7 +1763,7 @@ int __init ndisc_init(void)
/* /*
* Initialize the neighbour table * Initialize the neighbour table
*/ */
neigh_table_init(&nd_tbl); neigh_table_init(NEIGH_ND_TABLE, &nd_tbl);
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
err = neigh_sysctl_register(NULL, &nd_tbl.parms, err = neigh_sysctl_register(NULL, &nd_tbl.parms,
...@@ -1796,6 +1796,6 @@ void ndisc_cleanup(void) ...@@ -1796,6 +1796,6 @@ void ndisc_cleanup(void)
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
neigh_sysctl_unregister(&nd_tbl.parms); neigh_sysctl_unregister(&nd_tbl.parms);
#endif #endif
neigh_table_clear(&nd_tbl); neigh_table_clear(NEIGH_ND_TABLE, &nd_tbl);
unregister_pernet_subsys(&ndisc_net_ops); unregister_pernet_subsys(&ndisc_net_ops);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment