summaryrefslogtreecommitdiff
path: root/zebra/zebra_srte.c
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2022-11-17 15:26:55 +0200
committerGitHub <noreply@github.com>2022-11-17 15:26:55 +0200
commit1e5e7934eabc39831f79c113bb1c0b8b9a74c499 (patch)
tree1be73f3cb020ddf37aeaf7bbffe828016c6fda84 /zebra/zebra_srte.c
parent884f617f54d763a71f4acc85d79d66f4f7ea72f1 (diff)
parent6082fb4249ce59b5e19b2257d78c4d91316a11bc (diff)
Merge pull request #12147 from pguibert6WIND/srte_flush
zebra: upon srte leave, flush sr policies
Diffstat (limited to 'zebra/zebra_srte.c')
-rw-r--r--zebra/zebra_srte.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/zebra/zebra_srte.c b/zebra/zebra_srte.c
index c0f18dd091..7d95607fcf 100644
--- a/zebra/zebra_srte.c
+++ b/zebra/zebra_srte.c
@@ -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);
}