diff --git a/yang/frr-zebra.yang b/yang/frr-zebra.yang index c9fa612b75..72f3f7072e 100644 --- a/yang/frr-zebra.yang +++ b/yang/frr-zebra.yang @@ -2961,6 +2961,11 @@ module frr-zebra { type boolean; description "IPv6 forwarding status."; + } + leaf mpls-forwarding { + type boolean; + description + "MPLS forwarding status."; } } // End of operational / state container diff --git a/zebra/zebra_nb.c b/zebra/zebra_nb.c index f45ce03956..50fdb8b7aa 100644 --- a/zebra/zebra_nb.c +++ b/zebra/zebra_nb.c @@ -57,6 +57,12 @@ const struct frr_yang_module_info frr_zebra_info = { .get_elem = zebra_ipv6_forwarding_get_elem, } }, + { + .xpath = "/frr-zebra:zebra/state/mpls-forwarding", + .cbs = { + .get_elem = zebra_state_mpls_forwarding_get_elem, + } + }, { .xpath = "/frr-zebra:zebra/workqueue-hold-timer", .cbs = { diff --git a/zebra/zebra_nb.h b/zebra/zebra_nb.h index 7b0205058e..628eeab1de 100644 --- a/zebra/zebra_nb.h +++ b/zebra/zebra_nb.h @@ -37,6 +37,7 @@ int zebra_ipv6_forwarding_modify(struct nb_cb_modify_args *args); int zebra_ipv6_forwarding_destroy(struct nb_cb_destroy_args *args); int zebra_workqueue_hold_timer_modify(struct nb_cb_modify_args *args); struct yang_data *zebra_ipv6_forwarding_get_elem(struct nb_cb_get_elem_args *args); +struct yang_data *zebra_state_mpls_forwarding_get_elem(struct nb_cb_get_elem_args *args); int zebra_zapi_packets_modify(struct nb_cb_modify_args *args); int zebra_import_kernel_table_table_id_modify(struct nb_cb_modify_args *args); int zebra_import_kernel_table_table_id_destroy(struct nb_cb_destroy_args *args); diff --git a/zebra/zebra_nb_state.c b/zebra/zebra_nb_state.c index 8f072d302d..54af91dafa 100644 --- a/zebra/zebra_nb_state.c +++ b/zebra/zebra_nb_state.c @@ -15,6 +15,7 @@ #include "zebra/zebra_vxlan.h" #include "zebra/zebra_vxlan_if.h" #include "zebra/ipforward.h" +#include "zebra/zebra_mpls.h" /* * XPath: /frr-interface:lib/interface/frr-zebra:zebra/state/up-count @@ -1189,3 +1190,11 @@ struct yang_data *zebra_ipv6_forwarding_get_elem(struct nb_cb_get_elem_args *arg { return yang_data_new_bool(args->xpath, ipforward_ipv6()); } + +/* + * XPath: /frr-zebra:zebra/state/mpls-forwarding + */ +struct yang_data *zebra_state_mpls_forwarding_get_elem(struct nb_cb_get_elem_args *args) +{ + return yang_data_new_bool(args->xpath, mpls_enabled); +}