From 7832bbcc30cd770e2f85b0b96fb0a4f09e29095e Mon Sep 17 00:00:00 2001 From: Philippe Guibert Date: Sun, 9 Jul 2023 21:44:03 +0200 Subject: zebra, yang: add an mpls leaf to interface The yang NB API does not handle the mpls configuration on its leaf. Add an mpls leaf to stick to the mpls configuration. - true or false to mean if config - not defined, means no config. Signed-off-by: Philippe Guibert --- zebra/zebra_nb_config.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'zebra/zebra_nb_config.c') diff --git a/zebra/zebra_nb_config.c b/zebra/zebra_nb_config.c index 336669a49b..5ea03112bc 100644 --- a/zebra/zebra_nb_config.c +++ b/zebra/zebra_nb_config.c @@ -1087,6 +1087,50 @@ int lib_interface_zebra_shutdown_destroy(struct nb_cb_destroy_args *args) return NB_OK; } +/* + * XPath: /frr-interface:lib/interface/frr-zebra:zebra/mpls + */ +int lib_interface_zebra_mpls_modify(struct nb_cb_modify_args *args) +{ + struct interface *ifp; + bool mpls; + struct zebra_if *zif; + + if (args->event != NB_EV_APPLY) + return NB_OK; + + ifp = nb_running_get_entry(args->dnode, NULL, true); + zif = ifp->info; + mpls = yang_dnode_get_bool(args->dnode, NULL); + + if (mpls) + zif->mpls_config = IF_ZEBRA_DATA_ON; + else + zif->mpls_config = IF_ZEBRA_DATA_OFF; + + dplane_intf_mpls_modify_state(ifp, mpls); + + return NB_OK; +} + +int lib_interface_zebra_mpls_destroy(struct nb_cb_destroy_args *args) +{ + struct interface *ifp; + struct zebra_if *zif; + + if (args->event != NB_EV_APPLY) + return NB_OK; + + ifp = nb_running_get_entry(args->dnode, NULL, true); + zif = ifp->info; + + zif->mpls_config = IF_ZEBRA_DATA_UNSPEC; + + /* keep the state as it is */ + + return NB_OK; +} + /* * XPath: /frr-interface:lib/interface/frr-zebra:zebra/bandwidth */ -- cgit v1.2.3