mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 17:18:56 +00:00
zebra: convert interface evpn mh bypass command to NB
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
This commit is contained in:
parent
7c6e41ecff
commit
4a18818b02
@ -2251,6 +2251,12 @@ module frr-zebra {
|
|||||||
description
|
description
|
||||||
"Preference value used for DF election.";
|
"Preference value used for DF election.";
|
||||||
}
|
}
|
||||||
|
leaf bypass {
|
||||||
|
type boolean;
|
||||||
|
default "false";
|
||||||
|
description
|
||||||
|
"Bypass mode.";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
container state {
|
container state {
|
||||||
config false;
|
config false;
|
||||||
|
@ -2808,7 +2808,7 @@ void zebra_evpn_es_bypass_update(struct zebra_evpn_es *es,
|
|||||||
zebra_evpn_es_br_port_dplane_update(es, __func__);
|
zebra_evpn_es_br_port_dplane_update(es, __func__);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void zebra_evpn_es_bypass_cfg_update(struct zebra_if *zif, bool bypass)
|
void zebra_evpn_es_bypass_cfg_update(struct zebra_if *zif, bool bypass)
|
||||||
{
|
{
|
||||||
bool old_bypass = !!(zif->es_info.flags & ZIF_CFG_ES_FLAG_BYPASS);
|
bool old_bypass = !!(zif->es_info.flags & ZIF_CFG_ES_FLAG_BYPASS);
|
||||||
|
|
||||||
@ -3331,6 +3331,9 @@ int zebra_evpn_mh_if_write(struct vty *vty, struct interface *ifp)
|
|||||||
if (zif->flags & ZIF_FLAG_EVPN_MH_UPLINK)
|
if (zif->flags & ZIF_FLAG_EVPN_MH_UPLINK)
|
||||||
vty_out(vty, " evpn mh uplink\n");
|
vty_out(vty, " evpn mh uplink\n");
|
||||||
|
|
||||||
|
if (zif->es_info.flags & ZIF_CFG_ES_FLAG_BYPASS)
|
||||||
|
vty_out(vty, " evpn mh bypass\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3345,22 +3348,13 @@ DEFPY_HIDDEN(zebra_evpn_es_bypass, zebra_evpn_es_bypass_cmd,
|
|||||||
"[no] evpn mh bypass",
|
"[no] evpn mh bypass",
|
||||||
NO_STR "EVPN\n" EVPN_MH_VTY_STR "set bypass mode\n")
|
NO_STR "EVPN\n" EVPN_MH_VTY_STR "set bypass mode\n")
|
||||||
{
|
{
|
||||||
VTY_DECLVAR_CONTEXT(interface, ifp);
|
if (!no)
|
||||||
struct zebra_if *zif;
|
nb_cli_enqueue_change(vty, "./frr-zebra:zebra/evpn-mh/bypass",
|
||||||
|
NB_OP_MODIFY, "true");
|
||||||
zif = ifp->info;
|
else
|
||||||
|
nb_cli_enqueue_change(vty, "./frr-zebra:zebra/evpn-mh/bypass",
|
||||||
if (no) {
|
NB_OP_DESTROY, NULL);
|
||||||
zebra_evpn_es_bypass_cfg_update(zif, false);
|
return nb_cli_apply_changes(vty, NULL);
|
||||||
} else {
|
|
||||||
if (!zebra_evpn_is_if_es_capable(zif)) {
|
|
||||||
vty_out(vty,
|
|
||||||
"%% DF bypass cannot be associated with this interface type\n");
|
|
||||||
return CMD_WARNING;
|
|
||||||
}
|
|
||||||
zebra_evpn_es_bypass_cfg_update(zif, true);
|
|
||||||
}
|
|
||||||
return CMD_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* CLI for configuring DF preference part for an ES */
|
/* CLI for configuring DF preference part for an ES */
|
||||||
|
@ -389,6 +389,7 @@ void zebra_evpn_es_lid_update(struct zebra_if *zif, uint32_t lid);
|
|||||||
void zebra_evpn_es_type0_esi_update(struct zebra_if *zif, esi_t *esi);
|
void zebra_evpn_es_type0_esi_update(struct zebra_if *zif, esi_t *esi);
|
||||||
|
|
||||||
void zebra_evpn_es_df_pref_update(struct zebra_if *zif, uint16_t df_pref);
|
void zebra_evpn_es_df_pref_update(struct zebra_if *zif, uint16_t df_pref);
|
||||||
|
void zebra_evpn_es_bypass_cfg_update(struct zebra_if *zif, bool bypass);
|
||||||
|
|
||||||
void zebra_evpn_mh_if_init(struct zebra_if *zif);
|
void zebra_evpn_mh_if_init(struct zebra_if *zif);
|
||||||
|
|
||||||
|
@ -534,6 +534,12 @@ const struct frr_yang_module_info frr_zebra_info = {
|
|||||||
.modify = lib_interface_zebra_evpn_mh_df_preference_modify,
|
.modify = lib_interface_zebra_evpn_mh_df_preference_modify,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.xpath = "/frr-interface:lib/interface/frr-zebra:zebra/evpn-mh/bypass",
|
||||||
|
.cbs = {
|
||||||
|
.modify = lib_interface_zebra_evpn_mh_bypass_modify,
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/up-count",
|
.xpath = "/frr-interface:lib/interface/frr-zebra:zebra/state/up-count",
|
||||||
.cbs = {
|
.cbs = {
|
||||||
|
@ -179,6 +179,7 @@ int lib_interface_zebra_evpn_mh_type_3_local_discriminator_destroy(
|
|||||||
struct nb_cb_destroy_args *args);
|
struct nb_cb_destroy_args *args);
|
||||||
int lib_interface_zebra_evpn_mh_df_preference_modify(
|
int lib_interface_zebra_evpn_mh_df_preference_modify(
|
||||||
struct nb_cb_modify_args *args);
|
struct nb_cb_modify_args *args);
|
||||||
|
int lib_interface_zebra_evpn_mh_bypass_modify(struct nb_cb_modify_args *args);
|
||||||
struct yang_data *
|
struct yang_data *
|
||||||
lib_interface_zebra_state_up_count_get_elem(struct nb_cb_get_elem_args *args);
|
lib_interface_zebra_state_up_count_get_elem(struct nb_cb_get_elem_args *args);
|
||||||
struct yang_data *
|
struct yang_data *
|
||||||
|
@ -2419,6 +2419,24 @@ int lib_interface_zebra_evpn_mh_df_preference_modify(
|
|||||||
return NB_OK;
|
return NB_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XPath: /frr-interface:lib/interface/frr-zebra:zebra/evpn-mh/bypass
|
||||||
|
*/
|
||||||
|
int lib_interface_zebra_evpn_mh_bypass_modify(struct nb_cb_modify_args *args)
|
||||||
|
{
|
||||||
|
struct interface *ifp;
|
||||||
|
bool bypass;
|
||||||
|
|
||||||
|
if (args->event != NB_EV_APPLY)
|
||||||
|
return NB_OK;
|
||||||
|
|
||||||
|
ifp = nb_running_get_entry(args->dnode, NULL, true);
|
||||||
|
bypass = yang_dnode_get_bool(args->dnode, NULL);
|
||||||
|
zebra_evpn_es_bypass_cfg_update(ifp->info, bypass);
|
||||||
|
|
||||||
|
return NB_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XPath: /frr-vrf:lib/vrf/frr-zebra:zebra/l3vni-id
|
* XPath: /frr-vrf:lib/vrf/frr-zebra:zebra/l3vni-id
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user