diff options
Diffstat (limited to 'pimd/pim_nb_config.c')
| -rw-r--r-- | pimd/pim_nb_config.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/pimd/pim_nb_config.c b/pimd/pim_nb_config.c index c926696610..1be5e9cb88 100644 --- a/pimd/pim_nb_config.c +++ b/pimd/pim_nb_config.c @@ -2163,6 +2163,55 @@ int lib_interface_pim_address_family_hello_holdtime_destroy( return NB_OK; } + +/* + * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/neighbor-filter-prefix-list + */ +int lib_interface_pim_address_family_nbr_plist_modify(struct nb_cb_modify_args *args) +{ + struct interface *ifp; + struct pim_interface *pim_ifp; + const char *plist; + + plist = yang_dnode_get_string(args->dnode, NULL); + + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_ABORT: + case NB_EV_PREPARE: + break; + case NB_EV_APPLY: + ifp = nb_running_get_entry(args->dnode, NULL, true); + pim_ifp = ifp->info; + + XFREE(MTYPE_PIM_PLIST_NAME, pim_ifp->nbr_plist); + pim_ifp->nbr_plist = XSTRDUP(MTYPE_PIM_PLIST_NAME, plist); + break; + } + + return NB_OK; +} + +int lib_interface_pim_address_family_nbr_plist_destroy(struct nb_cb_destroy_args *args) +{ + struct interface *ifp; + struct pim_interface *pim_ifp; + + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_ABORT: + case NB_EV_PREPARE: + break; + case NB_EV_APPLY: + ifp = nb_running_get_entry(args->dnode, NULL, true); + pim_ifp = ifp->info; + XFREE(MTYPE_PIM_PLIST_NAME, pim_ifp->nbr_plist); + break; + } + + return NB_OK; +} + /* * XPath: /frr-interface:lib/interface/frr-pim:pim/address-family/bfd */ @@ -4493,6 +4542,29 @@ int lib_interface_gmp_address_family_robustness_variable_modify( } /* + * XPath: /frr-interface:lib/interface/frr-gmp:gmp/address-family/immediate-leave + */ +int lib_interface_gmp_immediate_leave_modify(struct nb_cb_modify_args *args) +{ + struct interface *ifp; + struct pim_interface *pim_ifp; + + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + break; + case NB_EV_APPLY: + ifp = nb_running_get_entry(args->dnode, NULL, true); + pim_ifp = ifp->info; + pim_ifp->gmp_immediate_leave = yang_dnode_get_bool(args->dnode, NULL); + break; + } + + return NB_OK; +} + +/* * XPath: /frr-interface:lib/interface/frr-gmp:gmp/address-family/proxy */ int lib_interface_gmp_address_family_proxy_modify(struct nb_cb_modify_args *args) |
