1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /* Zebra's client header.
3 * Copyright (C) 2020 Netdef, Inc.
9 #include "zebra/zebra_mpls.h"
11 #include "lib/zclient.h"
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,
24 struct zebra_sr_policy
{
25 RB_ENTRY(zebra_sr_policy
) entry
;
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
;
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
)
39 extern struct zebra_sr_policy_instance_head zebra_sr_policy_instances
;
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
);
60 #endif /* _ZEBRA_SRTE_H */