mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 10:49: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;
|
return;
|
||||||
|
|
||||||
policy = zebra_sr_policy_find(zp.color, &zp.endpoint);
|
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 = zebra_sr_policy_add(zp.color, &zp.endpoint, zp.name);
|
||||||
|
policy->sock = client->sock;
|
||||||
|
}
|
||||||
/* TODO: per-VRF list of SR-TE policies. */
|
/* TODO: per-VRF list of SR-TE policies. */
|
||||||
policy->zvrf = zvrf;
|
policy->zvrf = zvrf;
|
||||||
|
|
||||||
|
@ -384,6 +384,23 @@ int zebra_sr_policy_label_update(mpls_label_t label,
|
|||||||
return 0;
|
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)
|
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 zapi_srte_tunnel segment_list;
|
||||||
struct zebra_lsp *lsp;
|
struct zebra_lsp *lsp;
|
||||||
struct zebra_vrf *zvrf;
|
struct zebra_vrf *zvrf;
|
||||||
|
int sock;
|
||||||
};
|
};
|
||||||
RB_HEAD(zebra_sr_policy_instance_head, zebra_sr_policy);
|
RB_HEAD(zebra_sr_policy_instance_head, zebra_sr_policy);
|
||||||
RB_PROTOTYPE(zebra_sr_policy_instance_head, zebra_sr_policy, entry,
|
RB_PROTOTYPE(zebra_sr_policy_instance_head, zebra_sr_policy, entry,
|
||||||
|
Loading…
Reference in New Issue
Block a user