Skip to content

Commit

Permalink
isisd: changed to output the adjacency-sid/lan-adjacency-sid in yang …
Browse files Browse the repository at this point in the history
…format

Signed-off-by: Koichiro-Kanaya <abcs516tk1@gmail.com>
  • Loading branch information
kanaya516 committed Feb 19, 2022
1 parent 2aa2e59 commit 2723f30
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 0 deletions.
12 changes: 12 additions & 0 deletions isisd/isis_nb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1084,6 +1084,18 @@ const struct frr_yang_module_info frr_isisd_info = {
.get_elem = lib_interface_state_isis_adjacencies_adjacency_state_get_elem,
}
},
{
.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacency-sid",
.cbs = {
.get_next = lib_interface_state_isis_adjacency_sid_get_next,
}
},
{
.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacency-sid/value",
.cbs = {
.get_elem = lib_interface_state_isis_adjacency_sid_value_get_elem,
}
},
{
.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/adjacency-changes",
.cbs = {
Expand Down
4 changes: 4 additions & 0 deletions isisd/isis_nb.h
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,10 @@ lib_interface_state_isis_adjacencies_adjacency_neighbor_priority_get_elem(
struct nb_cb_get_elem_args *args);
struct yang_data *lib_interface_state_isis_adjacencies_adjacency_state_get_elem(
struct nb_cb_get_elem_args *args);
const void *lib_interface_state_isis_adjacency_sid_get_next(
struct nb_cb_get_next_args *args);
struct yang_data *lib_interface_state_isis_adjacency_sid_value_get_elem(
struct nb_cb_get_elem_args *args);
struct yang_data *
lib_interface_state_isis_event_counters_adjacency_changes_get_elem(
struct nb_cb_get_elem_args *args);
Expand Down
78 changes: 78 additions & 0 deletions isisd/isis_nb_state.c
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,84 @@ struct yang_data *lib_interface_state_isis_adjacencies_adjacency_state_get_elem(
isis_adj_yang_state(adj->adj_state));
}

/*
* XPath:
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacency-sid
*/
const void *lib_interface_state_isis_adjacency_sid_get_next(
struct nb_cb_get_next_args *args)
{
struct interface *ifp;
struct isis_circuit *circuit;
struct isis_adjacency *adj = NULL;
const struct sr_adjacency * const sra = args->list_entry;
struct sr_adjacency *sra_next = NULL;
struct listnode *node, *node_next;

ifp = (struct interface *)args->parent_list_entry;
if (!ifp)
return NULL;

circuit = circuit_scan_by_ifp(ifp);
if (!circuit)
return NULL;

switch (circuit->circ_type) {
case CIRCUIT_T_BROADCAST:;
int level = circuit->is_type;
if (level == ISIS_LEVEL1 || level == ISIS_LEVELS) {
struct list *adjdb;

adjdb = circuit->u.bc.adjdb[level - 1];
if (adjdb) {
adj = listnode_head(adjdb);
}

if (sra == NULL) {
sra_next = listnode_head(adj->adj_sids);
} else {
node = listnode_lookup(adj->adj_sids, sra);
node_next = listnextnode(node);
if (node_next)
sra_next = listgetdata(node_next);
}
}
return sra_next;
case CIRCUIT_T_P2P:
adj = circuit->u.p2p.neighbor;
if (sra == NULL) {
sra_next = listnode_head(adj->adj_sids);
} else {
node = listnode_lookup(adj->adj_sids, sra);
node_next = listnextnode(node);
if (node_next)
sra_next = listgetdata(node_next);
}
return sra_next;
}

return NULL;
}

/*
* XPath:
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacency-sids/adjacency-sid/value
*/
struct yang_data *lib_interface_state_isis_adjacency_sid_value_get_elem(
struct nb_cb_get_elem_args *args)
{
const struct sr_adjacency * const sra = args->list_entry;

switch (sra->adj->circuit->circ_type) {
case CIRCUIT_T_P2P:
return yang_data_new_uint32(args->xpath, sra->u.adj_sid->sid);
case CIRCUIT_T_BROADCAST:
return yang_data_new_uint32(args->xpath, sra->u.ladj_sid->sid);
}

return NULL;
}

/*
* XPath:
* /frr-interface:lib/interface/state/frr-isisd:isis/event-counters/adjacency-changes
Expand Down
10 changes: 10 additions & 0 deletions yang/frr-isisd.yang
Original file line number Diff line number Diff line change
Expand Up @@ -883,6 +883,16 @@ module frr-isisd {
}
}
}

list adjacency-sid {
description
"Adjacency SID configuration.";
leaf value {
description
"Value of Adjacency SID and LAN Adjacency SID";
type uint32;
}
}
}

grouping event-counters {
Expand Down

0 comments on commit 2723f30

Please sign in to comment.