mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
ipmr, ip6mr: Unite dumproute flows
The various MFC entries are being held in the same kind of mr_tables for both ipmr and ip6mr, and their traversal logic is identical. Also, with the exception of the addresses [and other small tidbits] the major bulk of the nla setting is identical. Unite as much of the dumping as possible between the two. Notice this requires creating an mr_table iterator for each, as the for-each preprocessor macro can't be used by the common logic. 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
889cd83cbe
commit
7b0db85737
@@ -170,6 +170,16 @@ void *mr_mfc_find_parent(struct mr_table *mrt,
|
||||
void *mr_mfc_find_any_parent(struct mr_table *mrt, int vifi);
|
||||
void *mr_mfc_find_any(struct mr_table *mrt, int vifi, void *hasharg);
|
||||
|
||||
int mr_fill_mroute(struct mr_table *mrt, struct sk_buff *skb,
|
||||
struct mr_mfc *c, struct rtmsg *rtm);
|
||||
int mr_rtm_dumproute(struct sk_buff *skb, struct netlink_callback *cb,
|
||||
struct mr_table *(*iter)(struct net *net,
|
||||
struct mr_table *mrt),
|
||||
int (*fill)(struct mr_table *mrt,
|
||||
struct sk_buff *skb,
|
||||
u32 portid, u32 seq, struct mr_mfc *c,
|
||||
int cmd, int flags),
|
||||
spinlock_t *lock);
|
||||
#else
|
||||
static inline void vif_device_init(struct vif_device *v,
|
||||
struct net_device *dev,
|
||||
@@ -207,6 +217,25 @@ static inline struct mr_mfc *mr_mfc_find_any(struct mr_table *mrt,
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline int mr_fill_mroute(struct mr_table *mrt, struct sk_buff *skb,
|
||||
struct mr_mfc *c, struct rtmsg *rtm)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int
|
||||
mr_rtm_dumproute(struct sk_buff *skb, struct netlink_callback *cb,
|
||||
struct mr_table *(*iter)(struct net *net,
|
||||
struct mr_table *mrt),
|
||||
int (*fill)(struct mr_table *mrt,
|
||||
struct sk_buff *skb,
|
||||
u32 portid, u32 seq, struct mr_mfc *c,
|
||||
int cmd, int flags),
|
||||
spinlock_t *lock)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline void *mr_mfc_find(struct mr_table *mrt, void *hasharg)
|
||||
|
||||
Reference in New Issue
Block a user