|
@@ -1506,6 +1506,9 @@ static void mroute_clean_tables(struct mr_table *mrt, bool all)
|
|
|
continue;
|
|
continue;
|
|
|
rhltable_remove(&mrt->mfc_hash, &c->mnode, ip6mr_rht_params);
|
|
rhltable_remove(&mrt->mfc_hash, &c->mnode, ip6mr_rht_params);
|
|
|
list_del_rcu(&c->list);
|
|
list_del_rcu(&c->list);
|
|
|
|
|
+ call_ip6mr_mfc_entry_notifiers(read_pnet(&mrt->net),
|
|
|
|
|
+ FIB_EVENT_ENTRY_DEL,
|
|
|
|
|
+ (struct mfc6_cache *)c, mrt->id);
|
|
|
mr6_netlink_event(mrt, (struct mfc6_cache *)c, RTM_DELROUTE);
|
|
mr6_netlink_event(mrt, (struct mfc6_cache *)c, RTM_DELROUTE);
|
|
|
mr_cache_put(c);
|
|
mr_cache_put(c);
|
|
|
}
|
|
}
|
|
@@ -1514,10 +1517,6 @@ static void mroute_clean_tables(struct mr_table *mrt, bool all)
|
|
|
spin_lock_bh(&mfc_unres_lock);
|
|
spin_lock_bh(&mfc_unres_lock);
|
|
|
list_for_each_entry_safe(c, tmp, &mrt->mfc_unres_queue, list) {
|
|
list_for_each_entry_safe(c, tmp, &mrt->mfc_unres_queue, list) {
|
|
|
list_del(&c->list);
|
|
list_del(&c->list);
|
|
|
- call_ip6mr_mfc_entry_notifiers(read_pnet(&mrt->net),
|
|
|
|
|
- FIB_EVENT_ENTRY_DEL,
|
|
|
|
|
- (struct mfc6_cache *)c,
|
|
|
|
|
- mrt->id);
|
|
|
|
|
mr6_netlink_event(mrt, (struct mfc6_cache *)c,
|
|
mr6_netlink_event(mrt, (struct mfc6_cache *)c,
|
|
|
RTM_DELROUTE);
|
|
RTM_DELROUTE);
|
|
|
ip6mr_destroy_unres(mrt, (struct mfc6_cache *)c);
|
|
ip6mr_destroy_unres(mrt, (struct mfc6_cache *)c);
|