ipmr, ip6mr: Make mfc_cache a common structure
mfc_cache and mfc6_cache are almost identical - the main difference is in the origin/group addresses and comparison-key. Make a common structure encapsulating most of the multicast routing logic - mr_mfc and convert both ipmr and ip6mr into using it. For easy conversion [casting, in this case] mr_mfc has to be the first field inside every multicast routing abstraction utilizing it. Signed-off-by: Yuval Mintz <yuvalm@mellanox.com> Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
0bbbf0e7d0
commit
494fff5637
@@ -71,7 +71,7 @@ struct mfc6_cache_cmp_arg {
|
||||
};
|
||||
|
||||
struct mfc6_cache {
|
||||
struct rhlist_head mnode;
|
||||
struct mr_mfc _c;
|
||||
union {
|
||||
struct {
|
||||
struct in6_addr mf6c_mcastgrp;
|
||||
@@ -79,27 +79,6 @@ struct mfc6_cache {
|
||||
};
|
||||
struct mfc6_cache_cmp_arg cmparg;
|
||||
};
|
||||
mifi_t mf6c_parent; /* Source interface */
|
||||
int mfc_flags; /* Flags on line */
|
||||
|
||||
union {
|
||||
struct {
|
||||
unsigned long expires;
|
||||
struct sk_buff_head unresolved; /* Unresolved buffers */
|
||||
} unres;
|
||||
struct {
|
||||
unsigned long last_assert;
|
||||
int minvif;
|
||||
int maxvif;
|
||||
unsigned long bytes;
|
||||
unsigned long pkt;
|
||||
unsigned long wrong_if;
|
||||
unsigned long lastuse;
|
||||
unsigned char ttls[MAXMIFS]; /* TTL thresholds */
|
||||
} res;
|
||||
} mfc_un;
|
||||
struct list_head list;
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
|
||||
#define MFC_STATIC 1
|
||||
|
Reference in New Issue
Block a user