mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-04-28 11:50:21 +00:00
Merge pull request #13649 from donaldsharp/unlock_the_node_or_else
zebra: Unlock the route node when sending route notifications
This commit is contained in:
commit
29f6fb04d8
@ -465,6 +465,13 @@ extern uint8_t route_distance(int type);
|
||||
extern void zebra_rib_evaluate_rn_nexthops(struct route_node *rn, uint32_t seq,
|
||||
bool rt_delete);
|
||||
|
||||
/*
|
||||
* rib_find_rn_from_ctx
|
||||
*
|
||||
* Returns a lock increased route_node for the appropriate
|
||||
* table and prefix specified by the context. Developer
|
||||
* should unlock the node when done.
|
||||
*/
|
||||
extern struct route_node *
|
||||
rib_find_rn_from_ctx(const struct zebra_dplane_ctx *ctx);
|
||||
|
||||
|
@ -801,11 +801,17 @@ int zsend_route_notify_owner(const struct route_node *rn,
|
||||
int zsend_route_notify_owner_ctx(const struct zebra_dplane_ctx *ctx,
|
||||
enum zapi_route_notify_owner note)
|
||||
{
|
||||
return (route_notify_internal(
|
||||
rib_find_rn_from_ctx(ctx), dplane_ctx_get_type(ctx),
|
||||
dplane_ctx_get_instance(ctx), dplane_ctx_get_vrf(ctx),
|
||||
dplane_ctx_get_table(ctx), note, dplane_ctx_get_afi(ctx),
|
||||
dplane_ctx_get_safi(ctx)));
|
||||
int result;
|
||||
struct route_node *rn = rib_find_rn_from_ctx(ctx);
|
||||
|
||||
result = route_notify_internal(
|
||||
rn, dplane_ctx_get_type(ctx), dplane_ctx_get_instance(ctx),
|
||||
dplane_ctx_get_vrf(ctx), dplane_ctx_get_table(ctx), note,
|
||||
dplane_ctx_get_afi(ctx), dplane_ctx_get_safi(ctx));
|
||||
|
||||
route_unlock_node(rn);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static void zread_route_notify_request(ZAPI_HANDLER_ARGS)
|
||||
|
Loading…
Reference in New Issue
Block a user