Commit b70432f7 authored by Yuval Mintz's avatar Yuval Mintz Committed by David S. Miller

mroute*: Make mr_table a common struct

Following previous changes to ip6mr, mr_table and mr6_table are
basically the same [up to mr6_table having additional '6' suffixes to
its variable names].
Move the common structure definition into a common header; This
requires renaming all references in ip6mr to variables that had the
distinct suffix.
Signed-off-by: default avatarYuval Mintz <yuvalm@mellanox.com>
Acked-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 87c418bf
...@@ -4,8 +4,6 @@ ...@@ -4,8 +4,6 @@
#include <linux/in.h> #include <linux/in.h>
#include <linux/pim.h> #include <linux/pim.h>
#include <linux/rhashtable.h>
#include <net/sock.h>
#include <net/fib_rules.h> #include <net/fib_rules.h>
#include <net/fib_notifier.h> #include <net/fib_notifier.h>
#include <uapi/linux/mroute.h> #include <uapi/linux/mroute.h>
...@@ -67,25 +65,6 @@ struct vif_entry_notifier_info { ...@@ -67,25 +65,6 @@ struct vif_entry_notifier_info {
#define VIFF_STATIC 0x8000 #define VIFF_STATIC 0x8000
#define VIF_EXISTS(_mrt, _idx) ((_mrt)->vif_table[_idx].dev != NULL)
struct mr_table {
struct list_head list;
possible_net_t net;
u32 id;
struct sock __rcu *mroute_sk;
struct timer_list ipmr_expire_timer;
struct list_head mfc_unres_queue;
struct vif_device vif_table[MAXVIFS];
struct rhltable mfc_hash;
struct list_head mfc_cache_list;
int maxvif;
atomic_t cache_resolve_queue_len;
bool mroute_do_assert;
bool mroute_do_pim;
int mroute_reg_vif_num;
};
/* mfc_flags: /* mfc_flags:
* MFC_STATIC - the entry was added statically (not by a routing daemon) * MFC_STATIC - the entry was added statically (not by a routing daemon)
* MFC_OFFLOAD - the entry was offloaded to the hardware * MFC_OFFLOAD - the entry was offloaded to the hardware
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <net/net_namespace.h> #include <net/net_namespace.h>
#include <uapi/linux/mroute6.h> #include <uapi/linux/mroute6.h>
#include <linux/mroute_base.h> #include <linux/mroute_base.h>
#include <linux/rhashtable.h>
#ifdef CONFIG_IPV6_MROUTE #ifdef CONFIG_IPV6_MROUTE
static inline int ip6_mroute_opt(int opt) static inline int ip6_mroute_opt(int opt)
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
#define __LINUX_MROUTE_BASE_H #define __LINUX_MROUTE_BASE_H
#include <linux/netdevice.h> #include <linux/netdevice.h>
#include <linux/rhashtable.h>
#include <net/net_namespace.h>
#include <net/sock.h>
/** /**
* struct vif_device - interface representor for multicast routing * struct vif_device - interface representor for multicast routing
...@@ -32,6 +35,49 @@ struct vif_device { ...@@ -32,6 +35,49 @@ struct vif_device {
__be32 local, remote; __be32 local, remote;
}; };
#ifndef MAXVIFS
/* This one is nasty; value is defined in uapi using different symbols for
* mroute and morute6 but both map into same 32.
*/
#define MAXVIFS 32
#endif
#define VIF_EXISTS(_mrt, _idx) (!!((_mrt)->vif_table[_idx].dev))
/**
* struct mr_table - a multicast routing table
* @list: entry within a list of multicast routing tables
* @net: net where this table belongs
* @id: identifier of the table
* @mroute_sk: socket associated with the table
* @ipmr_expire_timer: timer for handling unresolved routes
* @mfc_unres_queue: list of unresolved MFC entries
* @vif_table: array containing all possible vifs
* @mfc_hash: Hash table of all resolved routes for easy lookup
* @mfc_cache_list: list of resovled routes for possible traversal
* @maxvif: Identifier of highest value vif currently in use
* @cache_resolve_queue_len: current size of unresolved queue
* @mroute_do_assert: Whether to inform userspace on wrong ingress
* @mroute_do_pim: Whether to receive IGMP PIMv1
* @mroute_reg_vif_num: PIM-device vif index
*/
struct mr_table {
struct list_head list;
possible_net_t net;
u32 id;
struct sock __rcu *mroute_sk;
struct timer_list ipmr_expire_timer;
struct list_head mfc_unres_queue;
struct vif_device vif_table[MAXVIFS];
struct rhltable mfc_hash;
struct list_head mfc_cache_list;
int maxvif;
atomic_t cache_resolve_queue_len;
bool mroute_do_assert;
bool mroute_do_pim;
int mroute_reg_vif_num;
};
#ifdef CONFIG_IP_MROUTE_COMMON #ifdef CONFIG_IP_MROUTE_COMMON
void vif_device_init(struct vif_device *v, void vif_device_init(struct vif_device *v,
struct net_device *dev, struct net_device *dev,
......
...@@ -85,7 +85,7 @@ struct netns_ipv6 { ...@@ -85,7 +85,7 @@ struct netns_ipv6 {
struct sock *mc_autojoin_sk; struct sock *mc_autojoin_sk;
#ifdef CONFIG_IPV6_MROUTE #ifdef CONFIG_IPV6_MROUTE
#ifndef CONFIG_IPV6_MROUTE_MULTIPLE_TABLES #ifndef CONFIG_IPV6_MROUTE_MULTIPLE_TABLES
struct mr6_table *mrt6; struct mr_table *mrt6;
#else #else
struct list_head mr6_tables; struct list_head mr6_tables;
struct fib_rules_ops *mr6_rules_ops; struct fib_rules_ops *mr6_rules_ops;
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include <linux/cache.h> #include <linux/cache.h>
#include <linux/capability.h> #include <linux/capability.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/timer.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/fcntl.h> #include <linux/fcntl.h>
...@@ -53,7 +52,6 @@ ...@@ -53,7 +52,6 @@
#include <net/protocol.h> #include <net/protocol.h>
#include <linux/skbuff.h> #include <linux/skbuff.h>
#include <net/route.h> #include <net/route.h>
#include <net/sock.h>
#include <net/icmp.h> #include <net/icmp.h>
#include <net/udp.h> #include <net/udp.h>
#include <net/raw.h> #include <net/raw.h>
......
This diff is collapsed.
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