forked from Mirror/frr
isis, lib: add isis srv6 capability to ls_node
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
This commit is contained in:
parent
196f0d69fa
commit
a08922256a
|
@ -797,6 +797,12 @@ static struct ls_vertex *lsp_to_vertex(struct ls_ted *ted, struct isis_lsp *lsp)
|
|||
lnode.msd = cap->msd;
|
||||
SET_FLAG(lnode.flags, LS_NODE_MSD);
|
||||
}
|
||||
if (cap->srv6_cap.is_srv6_capable) {
|
||||
SET_FLAG(lnode.flags, LS_NODE_SRV6);
|
||||
lnode.srv6_cap_flags = cap->srv6_cap.flags;
|
||||
memcpy(&lnode.srv6_msd, &cap->srv6_msd,
|
||||
sizeof(struct isis_srv6_msd));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -140,6 +140,12 @@ int ls_node_same(struct ls_node *n1, struct ls_node *n2)
|
|||
if (CHECK_FLAG(n1->flags, LS_NODE_MSD) && (n1->msd != n2->msd))
|
||||
return 0;
|
||||
}
|
||||
if (CHECK_FLAG(n1->flags, LS_NODE_SRV6)) {
|
||||
if (n1->srv6_cap_flags != n2->srv6_cap_flags)
|
||||
return 0;
|
||||
if (memcmp(&n1->srv6_msd, &n2->srv6_msd, sizeof(n1->srv6_msd)))
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* OK, n1 & n2 are equal */
|
||||
return 1;
|
||||
|
|
|
@ -106,6 +106,7 @@ extern int ls_node_id_same(struct ls_node_id i1, struct ls_node_id i2);
|
|||
#define LS_NODE_SR 0x0040
|
||||
#define LS_NODE_SRLB 0x0080
|
||||
#define LS_NODE_MSD 0x0100
|
||||
#define LS_NODE_SRV6 0x0200
|
||||
|
||||
/* Link State Node structure */
|
||||
struct ls_node {
|
||||
|
@ -128,6 +129,14 @@ struct ls_node {
|
|||
} srlb;
|
||||
uint8_t algo[LIB_LS_SR_ALGO_COUNT]; /* Segment Routing Algorithms */
|
||||
uint8_t msd; /* Maximum Stack Depth */
|
||||
|
||||
uint16_t srv6_cap_flags; /* draft-ietf-idr-bgpls-srv6-ext, 3.1., flags field */
|
||||
struct ls_srv6_msd { /* draft-ietf-idr-bgpls-srv6-ext, 3.2. */
|
||||
uint8_t max_seg_left_msd;
|
||||
uint8_t max_end_pop_msd;
|
||||
uint8_t max_h_encaps_msd;
|
||||
uint8_t max_end_d_msd;
|
||||
} srv6_msd;
|
||||
};
|
||||
|
||||
/* Link State flags to indicate which Attribute parameters are valid */
|
||||
|
|
Loading…
Reference in a new issue