]> git.proxmox.com Git - mirror_frr.git/blob - zebra/zebra_srte.h
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / zebra / zebra_srte.h
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /* Zebra's client header.
3 * Copyright (C) 2020 Netdef, Inc.
4 */
5
6 #ifndef _ZEBRA_SRTE_H
7 #define _ZEBRA_SRTE_H
8
9 #include "zebra/zebra_mpls.h"
10
11 #include "lib/zclient.h"
12 #include "lib/srte.h"
13
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17
18 enum zebra_sr_policy_update_label_mode {
19 ZEBRA_SR_POLICY_LABEL_CREATED = 1,
20 ZEBRA_SR_POLICY_LABEL_UPDATED = 2,
21 ZEBRA_SR_POLICY_LABEL_REMOVED = 3,
22 };
23
24 struct zebra_sr_policy {
25 RB_ENTRY(zebra_sr_policy) entry;
26 uint32_t color;
27 struct ipaddr endpoint;
28 char name[SRTE_POLICY_NAME_MAX_LENGTH];
29 enum zebra_sr_policy_status status;
30 struct zapi_srte_tunnel segment_list;
31 struct zebra_lsp *lsp;
32 struct zebra_vrf *zvrf;
33 int sock;
34 };
35 RB_HEAD(zebra_sr_policy_instance_head, zebra_sr_policy);
36 RB_PROTOTYPE(zebra_sr_policy_instance_head, zebra_sr_policy, entry,
37 zebra_sr_policy_instance_compare)
38
39 extern struct zebra_sr_policy_instance_head zebra_sr_policy_instances;
40
41 struct zebra_sr_policy *
42 zebra_sr_policy_add(uint32_t color, struct ipaddr *endpoint, char *name);
43 void zebra_sr_policy_del(struct zebra_sr_policy *policy);
44 struct zebra_sr_policy *zebra_sr_policy_find(uint32_t color,
45 struct ipaddr *endpoint);
46 struct zebra_sr_policy *zebra_sr_policy_find_by_name(char *name);
47 int zebra_sr_policy_validate(struct zebra_sr_policy *policy,
48 struct zapi_srte_tunnel *new_tunnel);
49 int zebra_sr_policy_bsid_install(struct zebra_sr_policy *policy);
50 void zebra_sr_policy_bsid_uninstall(struct zebra_sr_policy *policy,
51 mpls_label_t old_bsid);
52 void zebra_srte_init(void);
53 int zebra_sr_policy_label_update(mpls_label_t label,
54 enum zebra_sr_policy_update_label_mode mode);
55
56 #ifdef __cplusplus
57 }
58 #endif
59
60 #endif /* _ZEBRA_SRTE_H */