mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-10 07:11:27 +00:00
isisd: changed to output the LAN-adjacency-sid in yang format
Signed-off-by: kanaya516 <abcs516tk1@gmail.com>
This commit is contained in:
parent
098737293c
commit
4747dddbea
@ -1136,6 +1136,36 @@ const struct frr_yang_module_info frr_isisd_info = {
|
|||||||
.get_elem = lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_protection_requested_get_elem,
|
.get_elem = lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_protection_requested_get_elem,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/lan-adjacency-sids/lan-adjacency-sid",
|
||||||
|
.cbs = {
|
||||||
|
.get_next = lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_get_next,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/lan-adjacency-sids/lan-adjacency-sid/af",
|
||||||
|
.cbs = {
|
||||||
|
.get_elem = lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_af_get_elem,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/lan-adjacency-sids/lan-adjacency-sid/value",
|
||||||
|
.cbs = {
|
||||||
|
.get_elem = lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_value_get_elem,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/lan-adjacency-sids/lan-adjacency-sid/weight",
|
||||||
|
.cbs = {
|
||||||
|
.get_elem = lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_weight_get_elem,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/lan-adjacency-sids/lan-adjacency-sid/protection-requested",
|
||||||
|
.cbs = {
|
||||||
|
.get_elem = lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_protection_requested_get_elem,
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/adjacency-changes",
|
.xpath = "/frr-interface:lib/interface/state/frr-isisd:isis/event-counters/adjacency-changes",
|
||||||
.cbs = {
|
.cbs = {
|
||||||
|
@ -369,15 +369,35 @@ lib_interface_state_isis_adjacencies_adjacency_neighbor_priority_get_elem(
|
|||||||
struct nb_cb_get_elem_args *args);
|
struct nb_cb_get_elem_args *args);
|
||||||
struct yang_data *lib_interface_state_isis_adjacencies_adjacency_state_get_elem(
|
struct yang_data *lib_interface_state_isis_adjacencies_adjacency_state_get_elem(
|
||||||
struct nb_cb_get_elem_args *args);
|
struct nb_cb_get_elem_args *args);
|
||||||
const void *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_get_next(
|
const void *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_get_next(
|
||||||
struct nb_cb_get_next_args *args);
|
struct nb_cb_get_next_args *args);
|
||||||
struct yang_data *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_af_get_elem(
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_af_get_elem(
|
||||||
struct nb_cb_get_elem_args *args);
|
struct nb_cb_get_elem_args *args);
|
||||||
struct yang_data *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_value_get_elem(
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_value_get_elem(
|
||||||
struct nb_cb_get_elem_args *args);
|
struct nb_cb_get_elem_args *args);
|
||||||
struct yang_data *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_weight_get_elem(
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_weight_get_elem(
|
||||||
struct nb_cb_get_elem_args *args);
|
struct nb_cb_get_elem_args *args);
|
||||||
struct yang_data *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_protection_requested_get_elem(
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_protection_requested_get_elem(
|
||||||
|
struct nb_cb_get_elem_args *args);
|
||||||
|
const void *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_get_next(
|
||||||
|
struct nb_cb_get_next_args *args);
|
||||||
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_af_get_elem(
|
||||||
|
struct nb_cb_get_elem_args *args);
|
||||||
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_value_get_elem(
|
||||||
|
struct nb_cb_get_elem_args *args);
|
||||||
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_weight_get_elem(
|
||||||
|
struct nb_cb_get_elem_args *args);
|
||||||
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_protection_requested_get_elem(
|
||||||
struct nb_cb_get_elem_args *args);
|
struct nb_cb_get_elem_args *args);
|
||||||
struct yang_data *
|
struct yang_data *
|
||||||
lib_interface_state_isis_event_counters_adjacency_changes_get_elem(
|
lib_interface_state_isis_event_counters_adjacency_changes_get_elem(
|
||||||
|
@ -218,7 +218,8 @@ struct yang_data *lib_interface_state_isis_adjacencies_adjacency_state_get_elem(
|
|||||||
* XPath:
|
* XPath:
|
||||||
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/adjacency-sids/adjacency-sid
|
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/adjacency-sids/adjacency-sid
|
||||||
*/
|
*/
|
||||||
const void *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_get_next(
|
const void *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_get_next(
|
||||||
struct nb_cb_get_next_args *args)
|
struct nb_cb_get_next_args *args)
|
||||||
{
|
{
|
||||||
const struct isis_adjacency *adj = args->parent_list_entry;
|
const struct isis_adjacency *adj = args->parent_list_entry;
|
||||||
@ -241,7 +242,8 @@ const void *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjace
|
|||||||
* XPath:
|
* XPath:
|
||||||
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/adjacency-sids/adjacency-sid/af
|
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/adjacency-sids/adjacency-sid/af
|
||||||
*/
|
*/
|
||||||
struct yang_data *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_af_get_elem(
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_af_get_elem(
|
||||||
struct nb_cb_get_elem_args *args)
|
struct nb_cb_get_elem_args *args)
|
||||||
{
|
{
|
||||||
const struct sr_adjacency *sra = args->list_entry;
|
const struct sr_adjacency *sra = args->list_entry;
|
||||||
@ -261,7 +263,8 @@ struct yang_data *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_
|
|||||||
* XPath:
|
* XPath:
|
||||||
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/adjacency-sids/adjacency-sid/value
|
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/adjacency-sids/adjacency-sid/value
|
||||||
*/
|
*/
|
||||||
struct yang_data *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_value_get_elem(
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_value_get_elem(
|
||||||
struct nb_cb_get_elem_args *args)
|
struct nb_cb_get_elem_args *args)
|
||||||
{
|
{
|
||||||
const struct sr_adjacency *sra = args->list_entry;
|
const struct sr_adjacency *sra = args->list_entry;
|
||||||
@ -281,7 +284,8 @@ struct yang_data *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_
|
|||||||
* XPath:
|
* XPath:
|
||||||
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/adjacency-sids/adjacency-sid/weight
|
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/adjacency-sids/adjacency-sid/weight
|
||||||
*/
|
*/
|
||||||
struct yang_data *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_weight_get_elem(
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_weight_get_elem(
|
||||||
struct nb_cb_get_elem_args *args)
|
struct nb_cb_get_elem_args *args)
|
||||||
{
|
{
|
||||||
const struct sr_adjacency *sra = args->list_entry;
|
const struct sr_adjacency *sra = args->list_entry;
|
||||||
@ -301,7 +305,8 @@ struct yang_data *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_
|
|||||||
* XPath:
|
* XPath:
|
||||||
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/adjacency-sids/adjacency-sid/protection-requested
|
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/adjacency-sids/adjacency-sid/protection-requested
|
||||||
*/
|
*/
|
||||||
struct yang_data *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_protection_requested_get_elem(
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_protection_requested_get_elem(
|
||||||
struct nb_cb_get_elem_args *args)
|
struct nb_cb_get_elem_args *args)
|
||||||
{
|
{
|
||||||
const struct sr_adjacency *sra = args->list_entry;
|
const struct sr_adjacency *sra = args->list_entry;
|
||||||
@ -311,7 +316,121 @@ struct yang_data *lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_
|
|||||||
/* Adjacency SID is not published with circuit type Broadcast */
|
/* Adjacency SID is not published with circuit type Broadcast */
|
||||||
return NULL;
|
return NULL;
|
||||||
case CIRCUIT_T_P2P:
|
case CIRCUIT_T_P2P:
|
||||||
return yang_data_new_bool(args->xpath, sra->u.adj_sid->flags & EXT_SUBTLV_LINK_ADJ_SID_BFLG);
|
return yang_data_new_bool(args->xpath,
|
||||||
|
sra->u.adj_sid->flags &
|
||||||
|
EXT_SUBTLV_LINK_ADJ_SID_BFLG);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XPath:
|
||||||
|
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/lan-adjacency-sids/lan-adjacency-sid
|
||||||
|
*/
|
||||||
|
const void *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_get_next(
|
||||||
|
struct nb_cb_get_next_args *args)
|
||||||
|
{
|
||||||
|
const struct isis_adjacency *adj = args->parent_list_entry;
|
||||||
|
const struct sr_adjacency *sra = args->list_entry, *sra_next = NULL;
|
||||||
|
struct listnode *node, *node_next;
|
||||||
|
|
||||||
|
if (args->list_entry == 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XPath:
|
||||||
|
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/lan-adjacency-sids/lan-adjacency-sid/af
|
||||||
|
*/
|
||||||
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_af_get_elem(
|
||||||
|
struct nb_cb_get_elem_args *args)
|
||||||
|
{
|
||||||
|
const struct sr_adjacency *sra = args->list_entry;
|
||||||
|
|
||||||
|
switch (sra->adj->circuit->circ_type) {
|
||||||
|
case CIRCUIT_T_BROADCAST:
|
||||||
|
return yang_data_new_uint8(args->xpath,
|
||||||
|
sra->u.ladj_sid->family);
|
||||||
|
case CIRCUIT_T_P2P:
|
||||||
|
/* LAN adjacency SID is not published with circuit type P2P */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XPath:
|
||||||
|
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/lan-adjacency-sids/lan-adjacency-sid/value
|
||||||
|
*/
|
||||||
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_value_get_elem(
|
||||||
|
struct nb_cb_get_elem_args *args)
|
||||||
|
{
|
||||||
|
const struct sr_adjacency *sra = args->list_entry;
|
||||||
|
|
||||||
|
switch (sra->adj->circuit->circ_type) {
|
||||||
|
case CIRCUIT_T_BROADCAST:
|
||||||
|
return yang_data_new_uint32(args->xpath, sra->u.ladj_sid->sid);
|
||||||
|
case CIRCUIT_T_P2P:
|
||||||
|
/* LAN adjacency SID is not published with circuit type P2P */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XPath:
|
||||||
|
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/lan-adjacency-sids/lan-adjacency-sid/weight
|
||||||
|
*/
|
||||||
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_weight_get_elem(
|
||||||
|
struct nb_cb_get_elem_args *args)
|
||||||
|
{
|
||||||
|
const struct sr_adjacency *sra = args->list_entry;
|
||||||
|
|
||||||
|
switch (sra->adj->circuit->circ_type) {
|
||||||
|
case CIRCUIT_T_BROADCAST:
|
||||||
|
return yang_data_new_uint8(args->xpath,
|
||||||
|
sra->u.ladj_sid->weight);
|
||||||
|
case CIRCUIT_T_P2P:
|
||||||
|
/* LAN adjacency SID is not published with circuit type P2P */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XPath:
|
||||||
|
* /frr-interface:lib/interface/state/frr-isisd:isis/adjacencies/adjacency/lan-adjacency-sids/lan-adjacency-sid/protection-requested
|
||||||
|
*/
|
||||||
|
struct yang_data *
|
||||||
|
lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_protection_requested_get_elem(
|
||||||
|
struct nb_cb_get_elem_args *args)
|
||||||
|
{
|
||||||
|
const struct sr_adjacency *sra = args->list_entry;
|
||||||
|
|
||||||
|
switch (sra->adj->circuit->circ_type) {
|
||||||
|
case CIRCUIT_T_BROADCAST:
|
||||||
|
return yang_data_new_bool(args->xpath,
|
||||||
|
sra->u.ladj_sid->flags &
|
||||||
|
EXT_SUBTLV_LINK_ADJ_SID_BFLG);
|
||||||
|
case CIRCUIT_T_P2P:
|
||||||
|
/* LAN adjacency SID is not published with circuit type P2P */
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -883,6 +883,7 @@ module frr-isisd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uses adjacency-sids;
|
uses adjacency-sids;
|
||||||
|
uses lan-adjacency-sids;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1041,6 +1042,41 @@ module frr-isisd {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
grouping lan-adjacency-sids {
|
||||||
|
description
|
||||||
|
"IS-IS segment routing LAN adjacency SID grouping.";
|
||||||
|
container lan-adjacency-sids {
|
||||||
|
description
|
||||||
|
"This container lists the information of LAN adjacency SID.";
|
||||||
|
list lan-adjacency-sid {
|
||||||
|
leaf af {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"This leaf describes the protocol-family associated with the
|
||||||
|
LAN adjacency SID.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf value {
|
||||||
|
type uint32;
|
||||||
|
description
|
||||||
|
"This leaf describes the value of LAN adjacency SID.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf weight {
|
||||||
|
type uint8;
|
||||||
|
description
|
||||||
|
"This leaf describes the weight of the LAN adjacency SID.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf protection-requested {
|
||||||
|
type boolean;
|
||||||
|
description
|
||||||
|
"This leaf describes if the LAN adjacency SID must be protected.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
container isis {
|
container isis {
|
||||||
description
|
description
|
||||||
"Configuration of the IS-IS routing daemon.";
|
"Configuration of the IS-IS routing daemon.";
|
||||||
|
Loading…
Reference in New Issue
Block a user