From b86980e1013906e4d71ffe15c92305fc4b001035 Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Tue, 20 Feb 2024 17:50:26 +0200 Subject: [PATCH] zebra: implement zif-type oper state leaf Signed-off-by: Igor Ryzhov --- yang/frr-zebra.yang | 6 ------ zebra/zebra_nb_state.c | 42 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/yang/frr-zebra.yang b/yang/frr-zebra.yang index 6c2a7bde7a4f..f1a69068c3bc 100644 --- a/yang/frr-zebra.yang +++ b/yang/frr-zebra.yang @@ -145,12 +145,6 @@ module frr-zebra { "Zebra interface type bond."; } - identity zif-bond-slave { - base zebra-interface-type; - description - "Zebra interface type bond slave."; - } - identity zif-macvlan { base zebra-interface-type; description diff --git a/zebra/zebra_nb_state.c b/zebra/zebra_nb_state.c index 8f81abc171f3..464c0be70702 100644 --- a/zebra/zebra_nb_state.c +++ b/zebra/zebra_nb_state.c @@ -49,8 +49,46 @@ lib_interface_zebra_state_down_count_get_elem(struct nb_cb_get_elem_args *args) struct yang_data * lib_interface_zebra_state_zif_type_get_elem(struct nb_cb_get_elem_args *args) { - /* TODO: implement me. */ - return NULL; + const struct interface *ifp = args->list_entry; + struct zebra_if *zebra_if; + const char *type = NULL; + + zebra_if = ifp->info; + + switch (zebra_if->zif_type) { + case ZEBRA_IF_OTHER: + type = "frr-zebra:zif-other"; + break; + case ZEBRA_IF_VXLAN: + type = "frr-zebra:zif-vxlan"; + break; + case ZEBRA_IF_VRF: + type = "frr-zebra:zif-vrf"; + break; + case ZEBRA_IF_BRIDGE: + type = "frr-zebra:zif-bridge"; + break; + case ZEBRA_IF_VLAN: + type = "frr-zebra:zif-vlan"; + break; + case ZEBRA_IF_MACVLAN: + type = "frr-zebra:zif-macvlan"; + break; + case ZEBRA_IF_VETH: + type = "frr-zebra:zif-veth"; + break; + case ZEBRA_IF_BOND: + type = "frr-zebra:zif-bond"; + break; + case ZEBRA_IF_GRE: + type = "frr-zebra:zif-gre"; + break; + } + + if (!type) + return NULL; + + return yang_data_new_string(args->xpath, type); } /*