mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-03 05:16:24 +00:00
Merge pull request #12147 from pguibert6WIND/srte_flush
zebra: upon srte leave, flush sr policies
This commit is contained in:
commit
1e5e7934ea
@ -2606,8 +2606,10 @@ static void zread_sr_policy_set(ZAPI_HANDLER_ARGS)
|
||||
return;
|
||||
|
||||
policy = zebra_sr_policy_find(zp.color, &zp.endpoint);
|
||||
if (!policy)
|
||||
if (!policy) {
|
||||
policy = zebra_sr_policy_add(zp.color, &zp.endpoint, zp.name);
|
||||
policy->sock = client->sock;
|
||||
}
|
||||
/* TODO: per-VRF list of SR-TE policies. */
|
||||
policy->zvrf = zvrf;
|
||||
|
||||
|
@ -384,6 +384,23 @@ int zebra_sr_policy_label_update(mpls_label_t label,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int zebra_srte_client_close_cleanup(struct zserv *client)
|
||||
{
|
||||
int sock = client->sock;
|
||||
struct zebra_sr_policy *policy;
|
||||
|
||||
if (!sock)
|
||||
return 0;
|
||||
|
||||
RB_FOREACH (policy, zebra_sr_policy_instance_head,
|
||||
&zebra_sr_policy_instances) {
|
||||
if (policy->sock == sock)
|
||||
zebra_sr_policy_del(policy);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void zebra_srte_init(void)
|
||||
{
|
||||
hook_register(zserv_client_close, zebra_srte_client_close_cleanup);
|
||||
}
|
||||
|
@ -45,6 +45,7 @@ struct zebra_sr_policy {
|
||||
struct zapi_srte_tunnel segment_list;
|
||||
struct zebra_lsp *lsp;
|
||||
struct zebra_vrf *zvrf;
|
||||
int sock;
|
||||
};
|
||||
RB_HEAD(zebra_sr_policy_instance_head, zebra_sr_policy);
|
||||
RB_PROTOTYPE(zebra_sr_policy_instance_head, zebra_sr_policy, entry,
|
||||
|
Loading…
Reference in New Issue
Block a user