diff --git a/yang/frr-zebra.yang b/yang/frr-zebra.yang index 5f1b711b97..3e005c2d35 100644 --- a/yang/frr-zebra.yang +++ b/yang/frr-zebra.yang @@ -2968,6 +2968,11 @@ module frr-zebra { config false; description "Operational data."; + leaf ip-forwarding { + type boolean; + description + "IP forwarding status."; + } } // End of operational / state container } diff --git a/zebra/zebra_nb.c b/zebra/zebra_nb.c index 81fe2ab6a0..83d89fa7b7 100644 --- a/zebra/zebra_nb.c +++ b/zebra/zebra_nb.c @@ -38,6 +38,12 @@ const struct frr_yang_module_info frr_zebra_info = { .destroy = zebra_ip_forwarding_destroy, } }, + { + .xpath = "/frr-zebra:zebra/state/ip-forwarding", + .cbs = { + .get_elem = zebra_ip_forwarding_get_elem, + } + }, { .xpath = "/frr-zebra:zebra/ipv6-forwarding", .cbs = { diff --git a/zebra/zebra_nb.h b/zebra/zebra_nb.h index 426ad4b7de..f742d24747 100644 --- a/zebra/zebra_nb.h +++ b/zebra/zebra_nb.h @@ -32,6 +32,7 @@ int get_debugs_rpc(struct nb_cb_rpc_args *args); int zebra_mcast_rpf_lookup_modify(struct nb_cb_modify_args *args); int zebra_ip_forwarding_modify(struct nb_cb_modify_args *args); int zebra_ip_forwarding_destroy(struct nb_cb_destroy_args *args); +struct yang_data *zebra_ip_forwarding_get_elem(struct nb_cb_get_elem_args *args); 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); diff --git a/zebra/zebra_nb_state.c b/zebra/zebra_nb_state.c index a7091821b5..9b9991c182 100644 --- a/zebra/zebra_nb_state.c +++ b/zebra/zebra_nb_state.c @@ -14,6 +14,7 @@ #include "printfrr.h" #include "zebra/zebra_vxlan.h" #include "zebra/zebra_vxlan_if.h" +#include "zebra/ipforward.h" /* * XPath: /frr-interface:lib/interface/frr-zebra:zebra/state/up-count @@ -1166,3 +1167,12 @@ struct yang_data *zebra_max_multipath_get_elem(struct nb_cb_get_elem_args *args) { return yang_data_new_uint16(args->xpath, zrouter.multipath_num); } + +/* + * XPath: + * /frr-zebra:zebra/ip_forwarding + */ +struct yang_data *zebra_ip_forwarding_get_elem(struct nb_cb_get_elem_args *args) +{ + return yang_data_new_bool(args->xpath, ipforward()); +}