From fbace230b0047d8f7cda2642a7fcaa64bcf1dc1a Mon Sep 17 00:00:00 2001 From: Chirag Shah Date: Tue, 29 Sep 2020 12:25:01 -0700 Subject: [PATCH 1/7] lib: add flowspec safi to identitiy ref parsing Signed-off-by: Chirag Shah --- lib/yang_wrappers.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/yang_wrappers.c b/lib/yang_wrappers.c index 4c658c1bfb..98f8fea0fe 100644 --- a/lib/yang_wrappers.c +++ b/lib/yang_wrappers.c @@ -1236,6 +1236,10 @@ const char *yang_afi_safi_value2identity(afi_t afi, safi_t safi) return "frr-routing:ipv4-labeled-unicast"; if (afi == AFI_IP6 && safi == SAFI_LABELED_UNICAST) return "frr-routing:ipv6-labeled-unicast"; + if (afi == AFI_IP && safi == SAFI_FLOWSPEC) + return "frr-routing:ipv4-flowspec"; + if (afi == AFI_IP6 && safi == SAFI_FLOWSPEC) + return "frr-routing:ipv6-flowspec"; return NULL; } @@ -1269,6 +1273,12 @@ void yang_afi_safi_identity2value(const char *key, afi_t *afi, safi_t *safi) } else if (strmatch(key, "frr-routing:l2vpn-evpn")) { *afi = AFI_L2VPN; *safi = SAFI_EVPN; + } else if (strmatch(key, "frr-routing:ipv4-flowspec")) { + *afi = AFI_IP; + *safi = SAFI_FLOWSPEC; + } else if (strmatch(key, "frr-routing:ipv6-flowspec")) { + *afi = AFI_IP6; + *safi = SAFI_FLOWSPEC; } else { *afi = AFI_UNSPEC; *safi = SAFI_UNSPEC; From f4b8ec07219cce13c8627efe311247ee06f3a8ab Mon Sep 17 00:00:00 2001 From: Chirag Shah Date: Tue, 15 Sep 2020 21:56:10 -0700 Subject: [PATCH 2/7] bgpd: neighbor peergrp config to transactional cli Signed-off-by: Chirag Shah --- bgpd/bgp_nb.c | 59 + bgpd/bgp_nb.h | 52 + bgpd/bgp_nb_config.c | 5796 +++++++++++++++++++++++++--- bgpd/bgp_vty.c | 3486 ++++++++++------- bgpd/bgp_vty.h | 15 + bgpd/bgpd.c | 4 +- bgpd/bgpd.h | 3 +- yang/frr-bgp-common-structure.yang | 5 +- yang/frr-bgp-neighbor.yang | 3 - yang/frr-bgp-peer-group.yang | 6 + yang/frr-bgp.yang | 25 + 11 files changed, 7417 insertions(+), 2037 deletions(-) diff --git a/bgpd/bgp_nb.c b/bgpd/bgp_nb.c index 333ca3cce9..b6070e030a 100644 --- a/bgpd/bgp_nb.c +++ b/bgpd/bgp_nb.c @@ -606,10 +606,17 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_neighbor_ebgp_multihop_disable_connected_check_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/local-as", + .cbs = { + .apply_finish = bgp_neighbors_neighbor_local_as_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/local-as/local-as", .cbs = { .modify = bgp_neighbors_neighbor_local_as_local_as_modify, + .destroy = bgp_neighbors_neighbor_local_as_local_as_destroy, } }, { @@ -666,10 +673,17 @@ const struct frr_yang_module_info frr_bgp_info = { .destroy = bgp_neighbors_neighbor_bfd_options_check_cp_failure_destroy, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/admin-shutdown", + .cbs = { + .apply_finish = bgp_neighbors_neighbor_admin_shutdown_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/admin-shutdown/enable", .cbs = { .modify = bgp_neighbors_neighbor_admin_shutdown_enable_modify, + .destroy = bgp_neighbors_neighbor_admin_shutdown_enable_destroy, } }, { @@ -737,6 +751,7 @@ const struct frr_yang_module_info frr_bgp_info = { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/enabled", .cbs = { .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_enabled_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_enabled_destroy, } }, { @@ -842,10 +857,17 @@ const struct frr_yang_module_info frr_bgp_info = { .destroy = bgp_neighbors_unnumbered_neighbor_update_source_interface_destroy, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/neighbor-remote-as", + .cbs = { + .apply_finish = bgp_neighbors_unnumbered_neighbor_neighbor_remote_as_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/neighbor-remote-as/remote-as-type", .cbs = { .modify = bgp_neighbors_unnumbered_neighbor_neighbor_remote_as_remote_as_type_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_neighbor_remote_as_remote_as_type_destroy, } }, { @@ -875,10 +897,17 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_unnumbered_neighbor_ebgp_multihop_disable_connected_check_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/local-as", + .cbs = { + .apply_finish = bgp_neighbors_unnumbered_neighbor_local_as_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/local-as/local-as", .cbs = { .modify = bgp_neighbors_unnumbered_neighbor_local_as_local_as_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_local_as_local_as_destroy, } }, { @@ -935,10 +964,17 @@ const struct frr_yang_module_info frr_bgp_info = { .destroy = bgp_neighbors_unnumbered_neighbor_bfd_options_check_cp_failure_destroy, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/admin-shutdown", + .cbs = { + .apply_finish = bgp_neighbors_unnumbered_neighbor_admin_shutdown_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/admin-shutdown/enable", .cbs = { .modify = bgp_neighbors_unnumbered_neighbor_admin_shutdown_enable_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_admin_shutdown_enable_destroy, } }, { @@ -1006,6 +1042,7 @@ const struct frr_yang_module_info frr_bgp_info = { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/enabled", .cbs = { .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_enabled_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_enabled_destroy, } }, { @@ -1112,10 +1149,17 @@ const struct frr_yang_module_info frr_bgp_info = { .destroy = bgp_peer_groups_peer_group_update_source_interface_destroy, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/neighbor-remote-as", + .cbs = { + .apply_finish = bgp_peer_group_neighbor_remote_as_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/neighbor-remote-as/remote-as-type", .cbs = { .modify = bgp_peer_groups_peer_group_neighbor_remote_as_remote_as_type_modify, + .destroy = bgp_peer_groups_peer_group_neighbor_remote_as_remote_as_type_destroy, } }, { @@ -1145,10 +1189,17 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_peer_groups_peer_group_ebgp_multihop_disable_connected_check_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/local-as", + .cbs = { + .apply_finish = bgp_peer_groups_peer_group_local_as_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/local-as/local-as", .cbs = { .modify = bgp_peer_groups_peer_group_local_as_local_as_modify, + .destroy = bgp_peer_groups_peer_group_local_as_local_as_destroy, } }, { @@ -1205,10 +1256,17 @@ const struct frr_yang_module_info frr_bgp_info = { .destroy = bgp_peer_groups_peer_group_bfd_options_check_cp_failure_destroy, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/admin-shutdown", + .cbs = { + .apply_finish = bgp_peer_groups_peer_group_admin_shutdown_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/admin-shutdown/enable", .cbs = { .modify = bgp_peer_groups_peer_group_admin_shutdown_enable_modify, + .destroy = bgp_peer_groups_peer_group_admin_shutdown_enable_destroy, } }, { @@ -1276,6 +1334,7 @@ const struct frr_yang_module_info frr_bgp_info = { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/enabled", .cbs = { .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_enabled_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_enabled_destroy, } }, { diff --git a/bgpd/bgp_nb.h b/bgpd/bgp_nb.h index 532021425f..5a9d602795 100644 --- a/bgpd/bgp_nb.h +++ b/bgpd/bgp_nb.h @@ -210,6 +210,8 @@ int bgp_neighbors_neighbor_update_source_interface_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_neighbor_remote_as_remote_as_type_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_neighbor_remote_as_remote_as_type_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_neighbor_remote_as_remote_as_modify( struct nb_cb_modify_args *args); int bgp_neighbors_neighbor_neighbor_remote_as_remote_as_destroy( @@ -226,6 +228,8 @@ int bgp_neighbors_neighbor_ebgp_multihop_disable_connected_check_modify( struct nb_cb_modify_args *args); int bgp_neighbors_neighbor_local_as_local_as_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_local_as_local_as_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_local_as_no_prepend_modify( struct nb_cb_modify_args *args); int bgp_neighbors_neighbor_local_as_no_prepend_destroy( @@ -256,6 +260,8 @@ int bgp_neighbors_neighbor_bfd_options_check_cp_failure_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_admin_shutdown_enable_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_admin_shutdown_enable_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_admin_shutdown_message_modify( struct nb_cb_modify_args *args); int bgp_neighbors_neighbor_admin_shutdown_message_destroy( @@ -290,6 +296,8 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_enabled_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_enabled_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_create(struct nb_cb_create_args *args); int bgp_neighbors_unnumbered_neighbor_destroy(struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_v6only_modify( @@ -336,6 +344,8 @@ int bgp_neighbors_unnumbered_neighbor_update_source_interface_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_neighbor_remote_as_remote_as_type_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_neighbor_remote_as_remote_as_type_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_neighbor_remote_as_remote_as_modify( struct nb_cb_modify_args *args); int bgp_neighbors_unnumbered_neighbor_neighbor_remote_as_remote_as_destroy( @@ -352,6 +362,8 @@ int bgp_neighbors_unnumbered_neighbor_ebgp_multihop_disable_connected_check_modi struct nb_cb_modify_args *args); int bgp_neighbors_unnumbered_neighbor_local_as_local_as_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_local_as_local_as_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_local_as_no_prepend_modify( struct nb_cb_modify_args *args); int bgp_neighbors_unnumbered_neighbor_local_as_no_prepend_destroy( @@ -382,6 +394,8 @@ int bgp_neighbors_unnumbered_neighbor_bfd_options_check_cp_failure_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_admin_shutdown_enable_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_admin_shutdown_enable_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_admin_shutdown_message_modify( struct nb_cb_modify_args *args); int bgp_neighbors_unnumbered_neighbor_admin_shutdown_message_destroy( @@ -416,6 +430,8 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_enabled_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_enabled_destroy( + struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_create(struct nb_cb_create_args *args); int bgp_peer_groups_peer_group_destroy(struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_ipv4_listen_range_create( @@ -462,6 +478,8 @@ int bgp_peer_groups_peer_group_update_source_interface_destroy( struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_neighbor_remote_as_remote_as_type_modify( struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_neighbor_remote_as_remote_as_type_destroy( + struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_neighbor_remote_as_remote_as_modify( struct nb_cb_modify_args *args); int bgp_peer_groups_peer_group_neighbor_remote_as_remote_as_destroy( @@ -478,6 +496,8 @@ int bgp_peer_groups_peer_group_ebgp_multihop_disable_connected_check_modify( struct nb_cb_modify_args *args); int bgp_peer_groups_peer_group_local_as_local_as_modify( struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_local_as_local_as_destroy( + struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_local_as_no_prepend_modify( struct nb_cb_modify_args *args); int bgp_peer_groups_peer_group_local_as_no_prepend_destroy( @@ -508,6 +528,8 @@ int bgp_peer_groups_peer_group_bfd_options_check_cp_failure_destroy( struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_admin_shutdown_enable_modify( struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_admin_shutdown_enable_destroy( + struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_admin_shutdown_message_modify( struct nb_cb_modify_args *args); int bgp_peer_groups_peer_group_admin_shutdown_message_destroy( @@ -542,6 +564,8 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_destroy( struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_enabled_modify( struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_enabled_destroy( + struct nb_cb_destroy_args *args); int bgp_global_afi_safis_afi_safi_ipv4_unicast_network_config_create( struct nb_cb_create_args *args); int bgp_global_afi_safis_afi_safi_ipv4_unicast_network_config_destroy( @@ -3577,6 +3601,22 @@ void bgp_global_afi_safi_ip_unicast_redistribution_list_apply_finish( struct nb_cb_apply_finish_args *args); void bgp_global_afi_safis_afi_safi_route_flap_dampening_apply_finish( struct nb_cb_apply_finish_args *args); +void bgp_neighbors_neighbor_local_as_apply_finish( + struct nb_cb_apply_finish_args *args); +void bgp_neighbors_unnumbered_neighbor_neighbor_remote_as_apply_finish( + struct nb_cb_apply_finish_args *args); +void bgp_neighbors_unnumbered_neighbor_local_as_apply_finish( + struct nb_cb_apply_finish_args *args); +void bgp_peer_group_neighbor_remote_as_apply_finish( + struct nb_cb_apply_finish_args *args); +void bgp_neighbors_neighbor_admin_shutdown_apply_finish( + struct nb_cb_apply_finish_args *args); +void bgp_neighbors_unnumbered_neighbor_admin_shutdown_apply_finish( + struct nb_cb_apply_finish_args *args); +void bgp_peer_groups_peer_group_admin_shutdown_apply_finish( + struct nb_cb_apply_finish_args *args); +void bgp_peer_groups_peer_group_local_as_apply_finish( + struct nb_cb_apply_finish_args *args); /* xpath macros */ /* route-list */ @@ -3592,5 +3632,17 @@ void bgp_global_afi_safis_afi_safi_route_flap_dampening_apply_finish( #define FRR_BGP_AFI_SAFI_REDIST_XPATH \ "./global/afi-safis/afi-safi[afi-safi-name='%s']/%s/" \ "redistribution-list[route-type='%s'][route-instance='%s']" +#define FRR_BGP_NEIGHBOR_NUM_XPATH "./neighbors/neighbor[remote-address='%s']%s" +#define FRR_BGP_NEIGHBOR_UNNUM_XPATH \ + "./neighbors/unnumbered-neighbor[interface='%s']%s" +#define FRR_BGP_PEER_GROUP_XPATH \ + "./peer-groups/peer-group[peer-group-name='%s']%s" +#define FRR_BGP_NEIGHBOR_NUM_AFI_SAFI_XPATH \ + "./neighbors/neighbor[remote-address='%s']/afi-safis/afi-safi[afi-safi-name='%s']" +#define FRR_BGP_NEIGHBOR_UNNUM_AFI_SAFI_XPATH \ + "./neighbors/neighbor[interface='%s']/afi-safis/afi-safi[afi-safi-name='%s']" +#define FRR_BGP_PEER_GROUP_AFI_SAFI_XPATH \ + "./peer-groups/peer-group[peer-group-name='%s']/afi-safis/afi-safi[afi-safi-name='%s']" +#define FRR_BGP_AF_XPATH "/afi-safis/afi-safi[afi-safi-name='%s']" #endif diff --git a/bgpd/bgp_nb_config.c b/bgpd/bgp_nb_config.c index 66dfa2aea7..3196c5f745 100644 --- a/bgpd/bgp_nb_config.c +++ b/bgpd/bgp_nb_config.c @@ -2090,18 +2090,73 @@ int bgp_global_afi_safis_afi_safi_destroy(struct nb_cb_destroy_args *args) return NB_OK; } +static struct peer *bgp_neighbor_peer_lookup(struct bgp *bgp, + const char *peer_str, char *errmsg, + size_t errmsg_len) +{ + struct peer *peer = NULL; + union sockunion su; + + str2sockunion(peer_str, &su); + peer = peer_lookup(bgp, &su); + if (!peer) { + snprintf(errmsg, errmsg_len, + "Specify remote-as or peer-group commands first"); + return NULL; + } + if (peer_dynamic_neighbor(peer)) { + snprintf(errmsg, errmsg_len, + "Operation not allowed on a dynamic neighbor\n"); + return NULL; + } + return peer; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor */ int bgp_neighbors_neighbor_create(struct nb_cb_create_args *args) { + struct bgp *bgp; + const char *peer_str; + union sockunion su; + switch (args->event) { case NB_EV_VALIDATE: + + peer_str = + yang_dnode_get_string(args->dnode, "./remote-address"); + + bgp = nb_running_get_entry(args->dnode, NULL, false); + if (!bgp) + return NB_OK; + + str2sockunion(peer_str, &su); + if (peer_address_self_check(bgp, &su)) { + snprintf( + args->errmsg, args->errmsg_len, + "Can not configure the local system as neighbor"); + return NB_ERR_VALIDATION; + } + + break; case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + /* Once bgp instance available check self peer addr */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + + peer_str = + yang_dnode_get_string(args->dnode, "./remote-address"); + str2sockunion(peer_str, &su); + if (peer_address_self_check(bgp, &su)) { + snprintf( + args->errmsg, args->errmsg_len, + "Can not configure the local system as neighbor"); + return NB_ERR_INCONSISTENCY; + } break; } @@ -2110,12 +2165,65 @@ int bgp_neighbors_neighbor_create(struct nb_cb_create_args *args) int bgp_neighbors_neighbor_destroy(struct nb_cb_destroy_args *args) { + + struct bgp *bgp; + const char *peer_str; + union sockunion su; + struct peer *peer = NULL; + struct peer *other; + switch (args->event) { case NB_EV_VALIDATE: + bgp = nb_running_get_entry(args->dnode, NULL, false); + if (!bgp) + return NB_OK; + peer_str = + yang_dnode_get_string(args->dnode, "./remote-address"); + str2sockunion(peer_str, &su); + + peer = peer_lookup(bgp, &su); + if (peer) { + if (peer_dynamic_neighbor(peer)) { + snprintf( + args->errmsg, args->errmsg_len, + "Operation not allowed on a dynamic neighbor"); + return NB_ERR_VALIDATION; + } + } + break; case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + + bgp = nb_running_get_entry(args->dnode, NULL, true); + + peer_str = + yang_dnode_get_string(args->dnode, "./remote-address"); + str2sockunion(peer_str, &su); + + peer = peer_lookup(bgp, &su); + if (peer) { + if (peer_dynamic_neighbor(peer)) { + snprintf( + args->errmsg, args->errmsg_len, + "Operation not allowed on a dynamic neighbor"); + return NB_ERR_INCONSISTENCY; + } + + other = peer->doppelganger; + + if (CHECK_FLAG(peer->flags, PEER_FLAG_CAPABILITY_ENHE)) + bgp_zebra_terminate_radv(peer->bgp, peer); + + peer_notify_unconfig(peer); + peer_delete(peer); + if (other && other->status != Deleted) { + peer_notify_unconfig(other); + peer_delete(other); + } + } + break; } @@ -2129,12 +2237,38 @@ int bgp_neighbors_neighbor_destroy(struct nb_cb_destroy_args *args) int bgp_neighbors_neighbor_local_interface_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + const char *intf_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) { + snprintf(args->errmsg, args->errmsg_len, + "BGP invalid peer %s", peer_str); + return NB_ERR_INCONSISTENCY; + } + + if (peer->conf_if) { + snprintf(args->errmsg, args->errmsg_len, + "BGP invalid peer %s", peer_str); + return NB_ERR_INCONSISTENCY; + } + + intf_str = yang_dnode_get_string(args->dnode, NULL); + + peer_interface_set(peer, intf_str); + break; } @@ -2144,12 +2278,35 @@ int bgp_neighbors_neighbor_local_interface_modify( int bgp_neighbors_neighbor_local_interface_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) { + snprintf(args->errmsg, args->errmsg_len, + "BGP invalid peer %s", peer_str); + return NB_ERR_INCONSISTENCY; + } + + if (peer->conf_if) { + snprintf(args->errmsg, args->errmsg_len, + "BGP invalid peer %s", peer_str); + return NB_ERR_INCONSISTENCY; + } + + peer_interface_unset(peer); + break; } @@ -2162,12 +2319,31 @@ int bgp_neighbors_neighbor_local_interface_destroy( */ int bgp_neighbors_neighbor_local_port_modify(struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t port; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) { + snprintf(args->errmsg, args->errmsg_len, + "BGP invalid peer %s", peer_str); + return NB_ERR_INCONSISTENCY; + } + + port = yang_dnode_get_uint16(args->dnode, NULL); + peer_port_set(peer, port); + break; } @@ -2176,12 +2352,33 @@ int bgp_neighbors_neighbor_local_port_modify(struct nb_cb_modify_args *args) int bgp_neighbors_neighbor_local_port_destroy(struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t port; + struct servent *sp; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) { + snprintf(args->errmsg, args->errmsg_len, + "BGP invalid peer %s", peer_str); + return NB_ERR_INCONSISTENCY; + } + + sp = getservbyname("bgp", "tcp"); + port = (sp == NULL) ? BGP_PORT_DEFAULT : ntohs(sp->s_port); + peer_port_set(peer, port); + break; } @@ -2194,12 +2391,67 @@ int bgp_neighbors_neighbor_local_port_destroy(struct nb_cb_destroy_args *args) */ int bgp_neighbors_neighbor_peer_group_modify(struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + const char *peer_grp_str; + struct peer *peer; + struct peer_group *group; + union sockunion su; + as_t as; + int ret = 0; + char prgrp_xpath[XPATH_MAXLEN]; + const struct lyd_node *bgp_dnode; + switch (args->event) { case NB_EV_VALIDATE: + peer_grp_str = yang_dnode_get_string(args->dnode, NULL); + bgp_dnode = yang_dnode_get_parent(args->dnode, "bgp"); + snprintf(prgrp_xpath, sizeof(prgrp_xpath), + FRR_BGP_PEER_GROUP_XPATH, peer_grp_str, ""); + + if (!yang_dnode_exists(bgp_dnode, prgrp_xpath)) { + snprintf(args->errmsg, args->errmsg_len, + "Configure the peer-group first %s", + peer_grp_str); + return NB_ERR_VALIDATION; + } + + break; case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + str2sockunion(peer_str, &su); + + peer_grp_str = yang_dnode_get_string(args->dnode, NULL); + group = peer_group_lookup(bgp, peer_grp_str); + if (!group) { + snprintf(args->errmsg, args->errmsg_len, + "Configure the peer-group first %s", + peer_grp_str); + return NB_ERR_INCONSISTENCY; + } + + ret = peer_group_bind(bgp, &su, peer, group, &as); + + if (ret == BGP_ERR_PEER_GROUP_PEER_TYPE_DIFFERENT) { + snprintf( + args->errmsg, args->errmsg_len, + "Peer with AS %u cannot be in this peer-group, members must be all internal or all external\n", + as); + return NB_ERR_INCONSISTENCY; + } + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -2208,12 +2460,33 @@ int bgp_neighbors_neighbor_peer_group_modify(struct nb_cb_modify_args *args) int bgp_neighbors_neighbor_peer_group_destroy(struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + if (CHECK_FLAG(peer->flags, PEER_FLAG_CAPABILITY_ENHE)) + bgp_zebra_terminate_radv(peer->bgp, peer); + + peer_notify_unconfig(peer); + ret = peer_delete(peer); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -2226,12 +2499,29 @@ int bgp_neighbors_neighbor_peer_group_destroy(struct nb_cb_destroy_args *args) */ int bgp_neighbors_neighbor_password_modify(struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + const char *passwrd_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + passwrd_str = yang_dnode_get_string(args->dnode, NULL); + + peer_password_set(peer, passwrd_str); + break; } @@ -2240,12 +2530,26 @@ int bgp_neighbors_neighbor_password_modify(struct nb_cb_modify_args *args) int bgp_neighbors_neighbor_password_destroy(struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + peer_password_unset(peer); + break; } @@ -2258,12 +2562,44 @@ int bgp_neighbors_neighbor_password_destroy(struct nb_cb_destroy_args *args) */ int bgp_neighbors_neighbor_ttl_security_modify(struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + uint8_t gtsm_hops; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + gtsm_hops = yang_dnode_get_uint8(args->dnode, NULL); + /* + * If 'neighbor swpX', then this is for directly connected + * peers, we should not accept a ttl-security hops value greater + * than 1. + */ + if (peer->conf_if && (gtsm_hops > BGP_GTSM_HOPS_CONNECTED)) { + snprintf( + args->errmsg, args->errmsg_len, + "%d is directly connected peer, hops cannot exceed 1\n", + gtsm_hops); + return NB_ERR_INCONSISTENCY; + } + + ret = peer_ttl_security_hops_set(peer, gtsm_hops); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret)) + return NB_ERR_INCONSISTENCY; + break; } @@ -2272,12 +2608,31 @@ int bgp_neighbors_neighbor_ttl_security_modify(struct nb_cb_modify_args *args) int bgp_neighbors_neighbor_ttl_security_destroy(struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + ret = peer_ttl_security_hops_unset(peer); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + + break; } @@ -2309,12 +2664,28 @@ int bgp_neighbors_neighbor_solo_modify(struct nb_cb_modify_args *args) int bgp_neighbors_neighbor_enforce_first_as_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_ENFORCE_FIRST_AS, enable, + args->errmsg, args->errmsg_len); break; } @@ -2327,12 +2698,30 @@ int bgp_neighbors_neighbor_enforce_first_as_modify( */ int bgp_neighbors_neighbor_description_modify(struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + const char *desc_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + desc_str = yang_dnode_get_string(args->dnode, NULL); + + peer_description_set(peer, desc_str); + break; } @@ -2341,12 +2730,26 @@ int bgp_neighbors_neighbor_description_modify(struct nb_cb_modify_args *args) int bgp_neighbors_neighbor_description_destroy(struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + peer_description_unset(peer); + break; } @@ -2359,12 +2762,32 @@ int bgp_neighbors_neighbor_description_destroy(struct nb_cb_destroy_args *args) */ int bgp_neighbors_neighbor_passive_mode_modify(struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool set = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + set = yang_dnode_get_bool(args->dnode, NULL); + + if (peer_flag_modify_nb(bgp, peer_str, peer, PEER_FLAG_PASSIVE, + set, args->errmsg, args->errmsg_len) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -2378,12 +2801,29 @@ int bgp_neighbors_neighbor_passive_mode_modify(struct nb_cb_modify_args *args) int bgp_neighbors_neighbor_capability_options_dynamic_capability_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_DYNAMIC_CAPABILITY, enable, + args->errmsg, args->errmsg_len); + break; } @@ -2416,12 +2856,29 @@ int bgp_neighbors_neighbor_capability_options_strict_capability_modify( int bgp_neighbors_neighbor_capability_options_extended_nexthop_capability_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_CAPABILITY_ENHE, enable, + args->errmsg, args->errmsg_len); + break; } @@ -2473,12 +2930,30 @@ int bgp_neighbors_neighbor_capability_options_override_capability_modify( int bgp_neighbors_neighbor_update_source_ip_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str, *source_str; + struct peer *peer; + union sockunion su; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + source_str = yang_dnode_get_string(args->dnode, NULL); + + str2sockunion(source_str, &su); + peer_update_source_addr_set(peer, &su); + break; } @@ -2488,12 +2963,26 @@ int bgp_neighbors_neighbor_update_source_ip_modify( int bgp_neighbors_neighbor_update_source_ip_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + peer_update_source_unset(peer); + break; } @@ -2507,12 +2996,28 @@ int bgp_neighbors_neighbor_update_source_ip_destroy( int bgp_neighbors_neighbor_update_source_interface_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str, *source_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + source_str = yang_dnode_get_string(args->dnode, NULL); + + peer_update_source_if_set(peer, source_str); + break; } @@ -2522,12 +3027,26 @@ int bgp_neighbors_neighbor_update_source_interface_modify( int bgp_neighbors_neighbor_update_source_interface_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + peer_update_source_unset(peer); + break; } @@ -2540,6 +3059,46 @@ int bgp_neighbors_neighbor_update_source_interface_destroy( */ int bgp_neighbors_neighbor_neighbor_remote_as_remote_as_type_modify( struct nb_cb_modify_args *args) +{ + struct bgp *bgp; + const char *peer_str; + int as_type = AS_SPECIFIED; + union sockunion su; + int ret; + as_t as = 0; + + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + return NB_OK; + case NB_EV_APPLY: + bgp = nb_running_get_entry(args->dnode, NULL, true); + + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + as_type = yang_dnode_get_enum(args->dnode, "../remote-as-type"); + /* When remote-as-type is as-specified, the peer will be + * created in remote_as_modify callback */ + if (yang_dnode_exists(args->dnode, "../remote-as")) + return NB_OK; + + str2sockunion(peer_str, &su); + ret = peer_remote_as(bgp, &su, NULL, &as, as_type, AFI_IP, + SAFI_UNICAST); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + + + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_neighbor_remote_as_remote_as_type_destroy( + struct nb_cb_destroy_args *args) { switch (args->event) { case NB_EV_VALIDATE: @@ -2560,12 +3119,34 @@ int bgp_neighbors_neighbor_neighbor_remote_as_remote_as_type_modify( int bgp_neighbors_neighbor_neighbor_remote_as_remote_as_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + int as_type = AS_SPECIFIED; + union sockunion su; + int ret; + as_t as = 0; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + as_type = yang_dnode_get_enum(args->dnode, "../remote-as-type"); + as = yang_dnode_get_uint32(args->dnode, NULL); + + str2sockunion(peer_str, &su); + ret = peer_remote_as(bgp, &su, NULL, &as, as_type, AFI_IP, + SAFI_UNICAST); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + + break; } @@ -2594,12 +3175,46 @@ int bgp_neighbors_neighbor_neighbor_remote_as_remote_as_destroy( int bgp_neighbors_neighbor_ebgp_multihop_enabled_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool set = false; + int ret = 0; + uint8_t ttl = MAXTTL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + if (peer->conf_if) { + ret = BGP_ERR_INVALID_FOR_DIRECT_PEER; + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, + ret); + return NB_ERR_INCONSISTENCY; + } + + set = yang_dnode_get_bool(args->dnode, NULL); + + if (set) + ret = peer_ebgp_multihop_set(peer, ttl); + else + ret = peer_ebgp_multihop_unset(peer); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + + break; } @@ -2609,12 +3224,32 @@ int bgp_neighbors_neighbor_ebgp_multihop_enabled_modify( int bgp_neighbors_neighbor_ebgp_multihop_enabled_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret = 0; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + ret = peer_ebgp_multihop_unset(peer); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + + break; } @@ -2628,12 +3263,39 @@ int bgp_neighbors_neighbor_ebgp_multihop_enabled_destroy( int bgp_neighbors_neighbor_ebgp_multihop_multihop_ttl_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret = 0; + uint8_t ttl = MAXTTL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + if (peer->conf_if) { + ret = BGP_ERR_INVALID_FOR_DIRECT_PEER; + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, + ret); + return NB_ERR_INCONSISTENCY; + } + + ttl = yang_dnode_get_uint8(args->dnode, NULL); + + ret = peer_ebgp_multihop_set(peer, ttl); + + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); + break; } @@ -2643,12 +3305,29 @@ int bgp_neighbors_neighbor_ebgp_multihop_multihop_ttl_modify( int bgp_neighbors_neighbor_ebgp_multihop_multihop_ttl_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret = 0; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + ret = peer_ebgp_multihop_unset(peer); + + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); + break; } @@ -2662,18 +3341,74 @@ int bgp_neighbors_neighbor_ebgp_multihop_multihop_ttl_destroy( int bgp_neighbors_neighbor_ebgp_multihop_disable_connected_check_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool set = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + set = yang_dnode_get_bool(args->dnode, NULL); + + if (peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_DISABLE_CONNECTED_CHECK, set, + args->errmsg, args->errmsg_len) + < 0) + return NB_ERR_INCONSISTENCY; + break; } return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/local-as + */ +void bgp_neighbors_neighbor_local_as_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + int ret; + as_t as = 0; + const char *peer_str; + struct peer *peer = NULL; + bool no_prepend = 0; + bool replace_as = 0; + + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + if (yang_dnode_exists(args->dnode, "./local-as")) + as = yang_dnode_get_uint32(args->dnode, "./local-as"); + if (yang_dnode_exists(args->dnode, "./no-prepend")) + no_prepend = yang_dnode_get_bool(args->dnode, "./no-prepend"); + if (yang_dnode_exists(args->dnode, "./no-replace-as")) + replace_as = + yang_dnode_get_bool(args->dnode, "./no-replace-as"); + + if (!as && !no_prepend && !replace_as) + ret = peer_local_as_unset(peer); + else + ret = peer_local_as_set(peer, as, no_prepend, replace_as); + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/local-as/local-as @@ -2693,6 +3428,40 @@ int bgp_neighbors_neighbor_local_as_local_as_modify( return NB_OK; } +int bgp_neighbors_neighbor_local_as_local_as_destroy( + struct nb_cb_destroy_args *args) +{ + struct bgp *bgp; + int ret; + const char *peer_str; + struct peer *peer; + + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + return NB_OK; + case NB_EV_APPLY: + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + + + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + ret = peer_local_as_unset(peer); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + + + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/local-as/no-prepend @@ -2935,6 +3704,34 @@ int bgp_neighbors_neighbor_bfd_options_check_cp_failure_destroy( return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/admin-shutdown + */ +void bgp_neighbors_neighbor_admin_shutdown_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + const char *message; + + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + if (yang_dnode_exists(args->dnode, "./message")) { + message = yang_dnode_get_string(args->dnode, "./message"); + peer_tx_shutdown_message_set(peer, message); + } + enable = yang_dnode_get_bool(args->dnode, "./enable"); + + peer_flag_modify_nb(bgp, peer_str, peer, PEER_FLAG_SHUTDOWN, enable, + args->errmsg, args->errmsg_len); +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/admin-shutdown/enable @@ -2954,6 +3751,21 @@ int bgp_neighbors_neighbor_admin_shutdown_enable_modify( return NB_OK; } +int bgp_neighbors_neighbor_admin_shutdown_enable_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/admin-shutdown/message @@ -3097,12 +3909,30 @@ int bgp_neighbors_neighbor_graceful_restart_graceful_restart_disable_destroy( int bgp_neighbors_neighbor_timers_advertise_interval_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t routeadv; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + routeadv = yang_dnode_get_uint16(args->dnode, NULL); + + ret = peer_advertise_interval_set(peer, routeadv); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -3112,12 +3942,28 @@ int bgp_neighbors_neighbor_timers_advertise_interval_modify( int bgp_neighbors_neighbor_timers_advertise_interval_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + ret = peer_advertise_interval_unset(peer); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -3131,12 +3977,30 @@ int bgp_neighbors_neighbor_timers_advertise_interval_destroy( int bgp_neighbors_neighbor_timers_connect_time_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t connect; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + connect = yang_dnode_get_uint16(args->dnode, NULL); + + ret = peer_timers_connect_set(peer, connect); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -3146,12 +4010,28 @@ int bgp_neighbors_neighbor_timers_connect_time_modify( int bgp_neighbors_neighbor_timers_connect_time_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + ret = peer_timers_connect_unset(peer); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -3165,12 +4045,37 @@ int bgp_neighbors_neighbor_timers_connect_time_destroy( int bgp_neighbors_neighbor_timers_hold_time_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t keepalive = 0; + uint16_t holdtime = 0; + int ret = 0; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + keepalive = yang_dnode_get_uint16(args->dnode, "../keepalive"); + holdtime = yang_dnode_get_uint16(args->dnode, NULL); + + if (keepalive != BGP_DEFAULT_KEEPALIVE + && holdtime != BGP_DEFAULT_HOLDTIME) { + ret = peer_timers_set(peer, keepalive, holdtime); + } else + ret = peer_timers_unset(peer); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -3184,12 +4089,44 @@ int bgp_neighbors_neighbor_timers_hold_time_modify( int bgp_neighbors_neighbor_timers_keepalive_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t keepalive = 0, curr_keep = 0; + uint16_t holdtime = 0; + int ret = 0; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + keepalive = yang_dnode_get_uint16(args->dnode, NULL); + holdtime = yang_dnode_get_uint16(args->dnode, "../hold-time"); + + if (keepalive != BGP_DEFAULT_KEEPALIVE + && holdtime != BGP_DEFAULT_HOLDTIME) { + if (peer->holdtime == holdtime) { + curr_keep = (keepalive < holdtime / 3 + ? keepalive + : holdtime / 3); + if (curr_keep == keepalive) + return NB_OK; + } + ret = peer_timers_set(peer, keepalive, holdtime); + } else + ret = peer_timers_unset(peer); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -3236,6 +4173,49 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_destroy( */ int bgp_neighbors_neighbor_afi_safis_afi_safi_enabled_modify( struct nb_cb_modify_args *args) +{ + struct bgp *bgp; + const char *peer_str; + const char *af_name; + afi_t afi; + safi_t safi; + bool activate = false; + int ret = 0; + union sockunion su; + struct peer *peer; + + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + return NB_OK; + case NB_EV_APPLY: + bgp = nb_running_get_entry(args->dnode, NULL, true); + af_name = + yang_dnode_get_string(args->dnode, "../afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + peer_str = yang_dnode_get_string(args->dnode, + "../../../remote-address"); + str2sockunion(peer_str, &su); + peer = peer_lookup(bgp, &su); + + activate = yang_dnode_get_bool(args->dnode, NULL); + + if (activate) + ret = peer_activate(peer, afi, safi); + else + ret = peer_deactivate(peer, afi, safi); + + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); + + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_enabled_destroy( + struct nb_cb_destroy_args *args) { switch (args->event) { case NB_EV_VALIDATE: @@ -3249,18 +4229,91 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_enabled_modify( return NB_OK; } +static struct peer *bgp_unnumbered_neighbor_peer_lookup(struct bgp *bgp, + const char *peer_str, + char *errmsg, + size_t errmsg_len) +{ + struct peer *peer = NULL; + + /* Not IP, could match either peer configured on interface or a + * group. */ + peer = peer_lookup_by_conf_if(bgp, peer_str); + if (!peer) { + snprintf(errmsg, errmsg_len, + "Specify remote-as or peer-group commands first"); + return NULL; + } + if (peer_dynamic_neighbor(peer)) { + snprintf(errmsg, errmsg_len, + "Operation not allowed on a dynamic neighbor\n"); + return NULL; + } + + return peer; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor */ int bgp_neighbors_unnumbered_neighbor_create(struct nb_cb_create_args *args) { + struct bgp *bgp; + const char *peer_str; + const char *peer_grp_str = NULL; + bool v6_only = false; + int as_type = AS_UNSPECIFIED; + as_t as = 0; + char prgrp_xpath[XPATH_MAXLEN]; + const struct lyd_node *bgp_dnode; + switch (args->event) { case NB_EV_VALIDATE: + peer_str = yang_dnode_get_string(args->dnode, "./interface"); + bgp_dnode = yang_dnode_get_parent(args->dnode, "bgp"); + snprintf(prgrp_xpath, sizeof(prgrp_xpath), + FRR_BGP_PEER_GROUP_XPATH, peer_str, ""); + + if (yang_dnode_exists(bgp_dnode, prgrp_xpath)) { + snprintf(args->errmsg, args->errmsg_len, + "Name conflict with peer-group: %s", peer_str); + return NB_ERR_VALIDATION; + } + + break; case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "./interface"); + + if (yang_dnode_exists(args->dnode, "./peer-group")) + peer_grp_str = yang_dnode_get_string(args->dnode, + "./peer-group"); + + if (yang_dnode_exists(args->dnode, "./v6-only")) + v6_only = yang_dnode_get_bool(args->dnode, "./v6-only"); + + if (yang_dnode_exists(args->dnode, + "./neighbor-remote-as/remote-as-type")) { + as_type = yang_dnode_get_enum( + args->dnode, + "./neighbor-remote-as/remote-as-type"); + if (yang_dnode_exists(args->dnode, + "./neighbor-remote-as/remote-as")) + as = yang_dnode_get_uint32( + args->dnode, + "./neighbor-remote-as/remote-as"); + } + + if (peer_conf_interface_create(bgp, peer_str, AFI_IP, + SAFI_UNICAST, v6_only, + peer_grp_str, as_type, as, + args->errmsg, args->errmsg_len)) + return NB_ERR_INCONSISTENCY; + break; } @@ -3269,12 +4322,34 @@ int bgp_neighbors_unnumbered_neighbor_create(struct nb_cb_create_args *args) int bgp_neighbors_unnumbered_neighbor_destroy(struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + + peer_str = yang_dnode_get_string(args->dnode, "./interface"); + /* look up for neighbor by interface name config. */ + peer = peer_lookup_by_conf_if(bgp, peer_str); + if (peer) { + /* Request zebra to terminate IPv6 RAs on this + * interface. */ + if (peer->ifp) + bgp_zebra_terminate_radv(peer->bgp, peer); + peer_notify_unconfig(peer); + peer_delete(peer); + } else { + snprintf(args->errmsg, args->errmsg_len, + "Create the peer-group first"); + return NB_ERR_INCONSISTENCY; + } + break; } @@ -3288,12 +4363,26 @@ int bgp_neighbors_unnumbered_neighbor_destroy(struct nb_cb_destroy_args *args) int bgp_neighbors_unnumbered_neighbor_v6only_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + bool v6_only = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../interface"); + + v6_only = yang_dnode_get_bool(args->dnode, NULL); + + if (peer_conf_interface_create( + bgp, peer_str, AFI_IP, SAFI_UNICAST, v6_only, NULL, + AS_UNSPECIFIED, 0, args->errmsg, args->errmsg_len)) + return NB_ERR_INCONSISTENCY; + break; } @@ -3307,12 +4396,60 @@ int bgp_neighbors_unnumbered_neighbor_v6only_modify( int bgp_neighbors_unnumbered_neighbor_peer_group_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + const char *peer_grp_str; + struct peer *peer; + struct peer_group *group; + union sockunion su; + as_t as; + int ret = 0; + char prgrp_xpath[XPATH_MAXLEN]; + const struct lyd_node *bgp_dnode; + switch (args->event) { case NB_EV_VALIDATE: + peer_grp_str = yang_dnode_get_string(args->dnode, NULL); + bgp_dnode = yang_dnode_get_parent(args->dnode, "bgp"); + snprintf(prgrp_xpath, sizeof(prgrp_xpath), + FRR_BGP_PEER_GROUP_XPATH, peer_grp_str, ""); + + if (!yang_dnode_exists(bgp_dnode, prgrp_xpath)) { + snprintf(args->errmsg, args->errmsg_len, + "Configure the peer-group first %s", + peer_grp_str); + return NB_ERR_VALIDATION; + } + + break; case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + + peer_grp_str = yang_dnode_get_string(args->dnode, NULL); + group = peer_group_lookup(bgp, peer_grp_str); + if (!group) { + snprintf(args->errmsg, args->errmsg_len, + "Configure the peer-group first\n"); + return NB_ERR_INCONSISTENCY; + } + + ret = peer_group_bind(bgp, &su, peer, group, &as); + if (ret == BGP_ERR_PEER_GROUP_PEER_TYPE_DIFFERENT) { + snprintf( + args->errmsg, args->errmsg_len, + "Peer with AS %u cannot be in this peer-group, members must be all internal or all external\n", + as); + return NB_ERR_INCONSISTENCY; + } + + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); + break; } @@ -3322,12 +4459,33 @@ int bgp_neighbors_unnumbered_neighbor_peer_group_modify( int bgp_neighbors_unnumbered_neighbor_peer_group_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../remote-address"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + + if (CHECK_FLAG(peer->flags, PEER_FLAG_CAPABILITY_ENHE)) + bgp_zebra_terminate_radv(peer->bgp, peer); + + peer_notify_unconfig(peer); + ret = peer_delete(peer); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -3341,12 +4499,27 @@ int bgp_neighbors_unnumbered_neighbor_peer_group_destroy( int bgp_neighbors_unnumbered_neighbor_password_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + const char *passwrd_str; + struct peer *peer = NULL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + passwrd_str = yang_dnode_get_string(args->dnode, NULL); + peer_password_set(peer, passwrd_str); + break; } @@ -3356,12 +4529,25 @@ int bgp_neighbors_unnumbered_neighbor_password_modify( int bgp_neighbors_unnumbered_neighbor_password_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer = NULL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + peer_password_unset(peer); + break; } @@ -3375,12 +4561,44 @@ int bgp_neighbors_unnumbered_neighbor_password_destroy( int bgp_neighbors_unnumbered_neighbor_ttl_security_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + uint8_t gtsm_hops; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + gtsm_hops = yang_dnode_get_uint8(args->dnode, NULL); + /* + * If 'neighbor swpX', then this is for directly connected + * peers, we should not accept a ttl-security hops value greater + * than 1. + */ + if (peer->conf_if && (gtsm_hops > BGP_GTSM_HOPS_CONNECTED)) { + snprintf( + args->errmsg, args->errmsg_len, + "%d is directly connected peer, hops cannot exceed 1\n", + gtsm_hops); + return NB_ERR_INCONSISTENCY; + } + + ret = peer_ttl_security_hops_set(peer, gtsm_hops); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -3390,12 +4608,27 @@ int bgp_neighbors_unnumbered_neighbor_ttl_security_modify( int bgp_neighbors_unnumbered_neighbor_ttl_security_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + ret = peer_ttl_security_hops_unset(peer); + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); + break; } @@ -3428,12 +4661,28 @@ int bgp_neighbors_unnumbered_neighbor_solo_modify( int bgp_neighbors_unnumbered_neighbor_enforce_first_as_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_ENFORCE_FIRST_AS, enable, + args->errmsg, args->errmsg_len); + break; } @@ -3447,12 +4696,29 @@ int bgp_neighbors_unnumbered_neighbor_enforce_first_as_modify( int bgp_neighbors_unnumbered_neighbor_description_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + const char *desc_str; + struct peer *peer = NULL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../interface"); + + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + desc_str = yang_dnode_get_string(args->dnode, NULL); + + peer_description_set(peer, desc_str); + break; } @@ -3462,12 +4728,26 @@ int bgp_neighbors_unnumbered_neighbor_description_modify( int bgp_neighbors_unnumbered_neighbor_description_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer = NULL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../interface"); + + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + peer_description_unset(peer); + break; } @@ -3481,12 +4761,31 @@ int bgp_neighbors_unnumbered_neighbor_description_destroy( int bgp_neighbors_unnumbered_neighbor_passive_mode_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool set = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + set = yang_dnode_get_bool(args->dnode, NULL); + + if (peer_flag_modify_nb(bgp, peer_str, peer, PEER_FLAG_PASSIVE, + set, args->errmsg, args->errmsg_len) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -3500,12 +4799,31 @@ int bgp_neighbors_unnumbered_neighbor_passive_mode_modify( int bgp_neighbors_unnumbered_neighbor_capability_options_dynamic_capability_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_DYNAMIC_CAPABILITY, enable, + args->errmsg, args->errmsg_len); + break; } @@ -3538,12 +4856,31 @@ int bgp_neighbors_unnumbered_neighbor_capability_options_strict_capability_modif int bgp_neighbors_unnumbered_neighbor_capability_options_extended_nexthop_capability_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_CAPABILITY_ENHE, enable, + args->errmsg, args->errmsg_len); + break; } @@ -3595,12 +4932,30 @@ int bgp_neighbors_unnumbered_neighbor_capability_options_override_capability_mod int bgp_neighbors_unnumbered_neighbor_update_source_ip_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str, *source_str; + struct peer *peer; + union sockunion su; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + source_str = yang_dnode_get_string(args->dnode, NULL); + + str2sockunion(source_str, &su); + peer_update_source_addr_set(peer, &su); + break; } @@ -3610,12 +4965,26 @@ int bgp_neighbors_unnumbered_neighbor_update_source_ip_modify( int bgp_neighbors_unnumbered_neighbor_update_source_ip_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + peer_update_source_unset(peer); + break; } @@ -3629,12 +4998,28 @@ int bgp_neighbors_unnumbered_neighbor_update_source_ip_destroy( int bgp_neighbors_unnumbered_neighbor_update_source_interface_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str, *source_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + source_str = yang_dnode_get_string(args->dnode, NULL); + + peer_update_source_if_set(peer, source_str); + break; } @@ -3644,18 +5029,67 @@ int bgp_neighbors_unnumbered_neighbor_update_source_interface_modify( int bgp_neighbors_unnumbered_neighbor_update_source_interface_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + peer_update_source_unset(peer); + break; } return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/neighbor-remote-as + */ +void bgp_neighbors_unnumbered_neighbor_neighbor_remote_as_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + const char *peer_str; + int as_type = AS_SPECIFIED; + int ret; + as_t as = 0; + struct peer *peer = NULL; + afi_t afi = AFI_IP; + safi_t safi = SAFI_UNICAST; + + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../interface"); + as_type = yang_dnode_get_enum(args->dnode, "./remote-as-type"); + if (yang_dnode_exists(args->dnode, "./remote-as")) + as = yang_dnode_get_uint32(args->dnode, "./remote-as"); + + peer = peer_lookup_by_conf_if(bgp, peer_str); + + ret = peer_remote_as(bgp, NULL, peer_str, &as, as_type, afi, safi); + + if (ret < 0 && !peer) { + snprintf(args->errmsg, args->errmsg_len, + "Create the peer-group or interface first"); + return; + } + + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/neighbor-remote-as/remote-as-type @@ -3675,6 +5109,33 @@ int bgp_neighbors_unnumbered_neighbor_neighbor_remote_as_remote_as_type_modify( return NB_OK; } +int bgp_neighbors_unnumbered_neighbor_neighbor_remote_as_remote_as_type_destroy( + struct nb_cb_destroy_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + return NB_OK; + case NB_EV_APPLY: + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = peer_lookup_by_conf_if(bgp, peer_str); + + /* remote-as set to 0 and as_type to unspecified */ + peer_as_change(peer, 0, AS_UNSPECIFIED); + + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/neighbor-remote-as/remote-as @@ -3716,12 +5177,42 @@ int bgp_neighbors_unnumbered_neighbor_neighbor_remote_as_remote_as_destroy( int bgp_neighbors_unnumbered_neighbor_ebgp_multihop_enabled_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool set = false; + int ret = 0; + uint8_t ttl = MAXTTL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = peer_lookup_by_conf_if(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + if (peer->conf_if) { + ret = BGP_ERR_INVALID_FOR_DIRECT_PEER; + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, + ret); + return NB_ERR_INCONSISTENCY; + } + + set = yang_dnode_get_bool(args->dnode, NULL); + + if (set) + ret = peer_ebgp_multihop_set(peer, ttl); + else + ret = peer_ebgp_multihop_unset(peer); + + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); + break; } @@ -3731,12 +5222,28 @@ int bgp_neighbors_unnumbered_neighbor_ebgp_multihop_enabled_modify( int bgp_neighbors_unnumbered_neighbor_ebgp_multihop_enabled_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret = 0; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = peer_lookup_by_conf_if(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + ret = peer_ebgp_multihop_unset(peer); + + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); + break; } @@ -3750,12 +5257,38 @@ int bgp_neighbors_unnumbered_neighbor_ebgp_multihop_enabled_destroy( int bgp_neighbors_unnumbered_neighbor_ebgp_multihop_multihop_ttl_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret = 0; + uint8_t ttl = MAXTTL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = peer_lookup_by_conf_if(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + if (peer->conf_if) { + ret = BGP_ERR_INVALID_FOR_DIRECT_PEER; + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, + ret); + return NB_ERR_INCONSISTENCY; + } + + ttl = yang_dnode_get_uint8(args->dnode, NULL); + + ret = peer_ebgp_multihop_set(peer, ttl); + + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); + break; } @@ -3765,12 +5298,28 @@ int bgp_neighbors_unnumbered_neighbor_ebgp_multihop_multihop_ttl_modify( int bgp_neighbors_unnumbered_neighbor_ebgp_multihop_multihop_ttl_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret = 0; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = peer_lookup_by_conf_if(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + ret = peer_ebgp_multihop_unset(peer); + + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); + break; } @@ -3783,6 +5332,82 @@ int bgp_neighbors_unnumbered_neighbor_ebgp_multihop_multihop_ttl_destroy( */ int bgp_neighbors_unnumbered_neighbor_ebgp_multihop_disable_connected_check_modify( struct nb_cb_modify_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool set = false; + + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + return NB_OK; + case NB_EV_APPLY: + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = peer_lookup_by_conf_if(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + set = yang_dnode_get_bool(args->dnode, NULL); + + if (peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_DISABLE_CONNECTED_CHECK, set, + args->errmsg, args->errmsg_len) + < 0) + return NB_ERR_INCONSISTENCY; + + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/local-as + */ +void bgp_neighbors_unnumbered_neighbor_local_as_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + int ret; + as_t as = 0; + const char *peer_str; + struct peer *peer = NULL; + bool no_prepend = 0; + bool replace_as = 0; + + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../interface"); + + peer = bgp_unnumbered_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + if (yang_dnode_exists(args->dnode, "./local-as")) + as = yang_dnode_get_uint32(args->dnode, "./local-as"); + if (yang_dnode_exists(args->dnode, "./no-prepend")) + no_prepend = yang_dnode_get_bool(args->dnode, "./no-prepend"); + if (yang_dnode_exists(args->dnode, "./no-replace-as")) + replace_as = + yang_dnode_get_bool(args->dnode, "./no-replace-as"); + + if (!as && !no_prepend && !replace_as) + ret = peer_local_as_unset(peer); + else + ret = peer_local_as_set(peer, as, no_prepend, replace_as); + + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/local-as/local-as + */ +int bgp_neighbors_unnumbered_neighbor_local_as_local_as_modify( + struct nb_cb_modify_args *args) { switch (args->event) { case NB_EV_VALIDATE: @@ -3796,12 +5421,8 @@ int bgp_neighbors_unnumbered_neighbor_ebgp_multihop_disable_connected_check_modi return NB_OK; } -/* - * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/local-as/local-as - */ -int bgp_neighbors_unnumbered_neighbor_local_as_local_as_modify( - struct nb_cb_modify_args *args) +int bgp_neighbors_unnumbered_neighbor_local_as_local_as_destroy( + struct nb_cb_destroy_args *args) { switch (args->event) { case NB_EV_VALIDATE: @@ -4057,6 +5678,34 @@ int bgp_neighbors_unnumbered_neighbor_bfd_options_check_cp_failure_destroy( return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/admin-shutdown + */ +void bgp_neighbors_unnumbered_neighbor_admin_shutdown_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + const char *message; + + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + if (yang_dnode_exists(args->dnode, "./message")) { + message = yang_dnode_get_string(args->dnode, "./message"); + peer_tx_shutdown_message_set(peer, message); + } + enable = yang_dnode_get_bool(args->dnode, "./enable"); + + peer_flag_modify_nb(bgp, peer_str, peer, PEER_FLAG_SHUTDOWN, enable, + args->errmsg, args->errmsg_len); +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/admin-shutdown/enable @@ -4076,6 +5725,21 @@ int bgp_neighbors_unnumbered_neighbor_admin_shutdown_enable_modify( return NB_OK; } +int bgp_neighbors_unnumbered_neighbor_admin_shutdown_enable_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/admin-shutdown/message @@ -4219,12 +5883,28 @@ int bgp_neighbors_unnumbered_neighbor_graceful_restart_graceful_restart_disable_ int bgp_neighbors_unnumbered_neighbor_timers_advertise_interval_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t routeadv; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + routeadv = yang_dnode_get_uint16(args->dnode, NULL); + + ret = peer_advertise_interval_set(peer, routeadv); + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); + break; } @@ -4234,12 +5914,26 @@ int bgp_neighbors_unnumbered_neighbor_timers_advertise_interval_modify( int bgp_neighbors_unnumbered_neighbor_timers_advertise_interval_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + + ret = peer_advertise_interval_unset(peer); + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); + break; } @@ -4253,12 +5947,28 @@ int bgp_neighbors_unnumbered_neighbor_timers_advertise_interval_destroy( int bgp_neighbors_unnumbered_neighbor_timers_connect_time_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t connect; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + connect = yang_dnode_get_uint16(args->dnode, NULL); + + ret = peer_timers_connect_set(peer, connect); + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); + break; } @@ -4268,12 +5978,27 @@ int bgp_neighbors_unnumbered_neighbor_timers_connect_time_modify( int bgp_neighbors_unnumbered_neighbor_timers_connect_time_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + ret = peer_timers_connect_unset(peer); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -4287,12 +6012,38 @@ int bgp_neighbors_unnumbered_neighbor_timers_connect_time_destroy( int bgp_neighbors_unnumbered_neighbor_timers_hold_time_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t keepalive = 0; + uint16_t holdtime = 0; + int ret = 0; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + + keepalive = yang_dnode_get_uint16(args->dnode, "../keepalive"); + holdtime = yang_dnode_get_uint16(args->dnode, NULL); + + if (keepalive != BGP_DEFAULT_KEEPALIVE + && holdtime != BGP_DEFAULT_HOLDTIME) { + ret = peer_timers_set(peer, keepalive, holdtime); + } else + ret = peer_timers_unset(peer); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -4306,12 +6057,45 @@ int bgp_neighbors_unnumbered_neighbor_timers_hold_time_modify( int bgp_neighbors_unnumbered_neighbor_timers_keepalive_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t keepalive = 0, curr_keep = 0; + uint16_t holdtime = 0; + int ret = 0; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + + keepalive = yang_dnode_get_uint16(args->dnode, NULL); + holdtime = yang_dnode_get_uint16(args->dnode, "../hold-time"); + + if (keepalive != BGP_DEFAULT_KEEPALIVE + && holdtime != BGP_DEFAULT_HOLDTIME) { + if (peer->holdtime == holdtime) { + curr_keep = (keepalive < holdtime / 3 + ? keepalive + : holdtime / 3); + if (curr_keep == keepalive) + return NB_OK; + } + ret = peer_timers_set(peer, keepalive, holdtime); + } else + ret = peer_timers_unset(peer); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -4358,6 +6142,51 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_destroy( */ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_enabled_modify( struct nb_cb_modify_args *args) +{ + struct bgp *bgp; + const char *peer_str; + const char *af_name; + afi_t afi; + safi_t safi; + bool activate = false; + int ret = 0; + struct peer *peer; + + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + return NB_OK; + case NB_EV_APPLY: + bgp = nb_running_get_entry(args->dnode, NULL, true); + af_name = + yang_dnode_get_string(args->dnode, "../afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + peer_str = yang_dnode_get_string(args->dnode, + "../../../interface"); + + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + + activate = yang_dnode_get_bool(args->dnode, NULL); + + if (activate) + ret = peer_activate(peer, afi, safi); + else + ret = peer_deactivate(peer, afi, safi); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_enabled_destroy( + struct nb_cb_destroy_args *args) { switch (args->event) { case NB_EV_VALIDATE: @@ -4371,18 +6200,65 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_enabled_modify( return NB_OK; } +static struct peer *bgp_peer_group_peer_lookup(struct bgp *bgp, + const char *peer_str) +{ + struct peer *peer = NULL; + struct peer_group *group = NULL; + + group = peer_group_lookup(bgp, peer_str); + return peer = group->conf; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group */ int bgp_peer_groups_peer_group_create(struct nb_cb_create_args *args) { + const char *peer_grp_str; + struct peer *peer; + struct peer_group *group; + struct bgp *bgp; + char unnbr_xpath[XPATH_MAXLEN]; + const struct lyd_node *bgp_dnode; + switch (args->event) { case NB_EV_VALIDATE: + peer_grp_str = + yang_dnode_get_string(args->dnode, "./peer-group-name"); + bgp_dnode = yang_dnode_get_parent(args->dnode, "bgp"); + snprintf(unnbr_xpath, sizeof(unnbr_xpath), + FRR_BGP_NEIGHBOR_UNNUM_XPATH, peer_grp_str, ""); + + if (yang_dnode_exists(bgp_dnode, unnbr_xpath)) { + snprintf(args->errmsg, args->errmsg_len, + "Name conflict with interface: %s", + peer_grp_str); + return NB_ERR_VALIDATION; + } + + break; case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_grp_str = + yang_dnode_get_string(args->dnode, "./peer-group-name"); + peer = peer_lookup_by_conf_if(bgp, peer_grp_str); + if (peer) { + snprintf(args->errmsg, args->errmsg_len, + "Name conflict with interface:"); + return NB_ERR_INCONSISTENCY; + } + + group = peer_group_get(bgp, peer_grp_str); + if (!group) { + snprintf(args->errmsg, args->errmsg_len, + "BGP failed to find or create peer-group"); + return NB_ERR_INCONSISTENCY; + } break; } @@ -4391,12 +6267,26 @@ int bgp_peer_groups_peer_group_create(struct nb_cb_create_args *args) int bgp_peer_groups_peer_group_destroy(struct nb_cb_destroy_args *args) { + const char *peer_grp_str; + struct peer_group *group; + struct bgp *bgp; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_grp_str = + yang_dnode_get_string(args->dnode, "./peer-group-name"); + + group = peer_group_lookup(bgp, peer_grp_str); + if (group) { + peer_group_notify_unconfig(group); + peer_group_delete(group); + } + break; } @@ -4477,12 +6367,25 @@ int bgp_peer_groups_peer_group_ipv6_listen_range_destroy( */ int bgp_peer_groups_peer_group_password_modify(struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + const char *passwrd_str; + struct peer *peer = NULL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + passwrd_str = yang_dnode_get_string(args->dnode, NULL); + peer_password_set(peer, passwrd_str); + break; } @@ -4491,12 +6394,23 @@ int bgp_peer_groups_peer_group_password_modify(struct nb_cb_modify_args *args) int bgp_peer_groups_peer_group_password_destroy(struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer = NULL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + peer_password_unset(peer); + break; } @@ -4510,12 +6424,44 @@ int bgp_peer_groups_peer_group_password_destroy(struct nb_cb_destroy_args *args) int bgp_peer_groups_peer_group_ttl_security_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + uint8_t gtsm_hops; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + gtsm_hops = yang_dnode_get_uint8(args->dnode, NULL); + /* + * If 'neighbor swpX', then this is for directly connected + * peers, we should not accept a ttl-security hops value greater + * than 1. + */ + if (peer->conf_if && (gtsm_hops > BGP_GTSM_HOPS_CONNECTED)) { + snprintf( + args->errmsg, args->errmsg_len, + "%d is directly connected peer, hops cannot exceed 1\n", + gtsm_hops); + return NB_ERR_INCONSISTENCY; + } + + ret = peer_ttl_security_hops_set(peer, gtsm_hops); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -4525,12 +6471,29 @@ int bgp_peer_groups_peer_group_ttl_security_modify( int bgp_peer_groups_peer_group_ttl_security_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + ret = peer_ttl_security_hops_unset(peer); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -4562,12 +6525,28 @@ int bgp_peer_groups_peer_group_solo_modify(struct nb_cb_modify_args *args) int bgp_peer_groups_peer_group_enforce_first_as_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_ENFORCE_FIRST_AS, enable, + args->errmsg, args->errmsg_len); + break; } @@ -4581,12 +6560,26 @@ int bgp_peer_groups_peer_group_enforce_first_as_modify( int bgp_peer_groups_peer_group_description_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + const char *desc_str; + struct peer *peer = NULL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + desc_str = yang_dnode_get_string(args->dnode, NULL); + + peer_description_set(peer, desc_str); + break; } @@ -4596,12 +6589,25 @@ int bgp_peer_groups_peer_group_description_modify( int bgp_peer_groups_peer_group_description_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer = NULL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + peer_description_unset(peer); + break; } @@ -4615,12 +6621,31 @@ int bgp_peer_groups_peer_group_description_destroy( int bgp_peer_groups_peer_group_passive_mode_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool set = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + set = yang_dnode_get_bool(args->dnode, NULL); + + if (peer_flag_modify_nb(bgp, peer_str, peer, PEER_FLAG_PASSIVE, + set, args->errmsg, args->errmsg_len) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -4634,12 +6659,30 @@ int bgp_peer_groups_peer_group_passive_mode_modify( int bgp_peer_groups_peer_group_capability_options_dynamic_capability_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_DYNAMIC_CAPABILITY, enable, + args->errmsg, args->errmsg_len); + break; } @@ -4672,12 +6715,30 @@ int bgp_peer_groups_peer_group_capability_options_strict_capability_modify( int bgp_peer_groups_peer_group_capability_options_extended_nexthop_capability_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_CAPABILITY_ENHE, enable, + args->errmsg, args->errmsg_len); + break; } @@ -4729,12 +6790,29 @@ int bgp_peer_groups_peer_group_capability_options_override_capability_modify( int bgp_peer_groups_peer_group_update_source_ip_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str, *source_str; + struct peer *peer; + union sockunion su; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + source_str = yang_dnode_get_string(args->dnode, NULL); + + str2sockunion(source_str, &su); + peer_update_source_addr_set(peer, &su); + break; } @@ -4744,12 +6822,25 @@ int bgp_peer_groups_peer_group_update_source_ip_modify( int bgp_peer_groups_peer_group_update_source_ip_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + peer_update_source_unset(peer); + break; } @@ -4763,12 +6854,27 @@ int bgp_peer_groups_peer_group_update_source_ip_destroy( int bgp_peer_groups_peer_group_update_source_interface_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str, *source_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + source_str = yang_dnode_get_string(args->dnode, NULL); + + peer_update_source_if_set(peer, source_str); + break; } @@ -4778,18 +6884,58 @@ int bgp_peer_groups_peer_group_update_source_interface_modify( int bgp_peer_groups_peer_group_update_source_interface_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + peer_update_source_unset(peer); + break; } return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/neighbor-remote-as + */ +void bgp_peer_group_neighbor_remote_as_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + const char *peer_str; + int as_type = AS_SPECIFIED; + int ret; + as_t as = 0; + + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../peer-group-name"); + as_type = yang_dnode_get_enum(args->dnode, "./remote-as-type"); + if (yang_dnode_exists(args->dnode, "./remote-as")) + as = yang_dnode_get_uint32(args->dnode, "./remote-as"); + + ret = peer_group_remote_as(bgp, peer_str, &as, as_type); + if (ret < 0) { + snprintf(args->errmsg, args->errmsg_len, + "Create the peer-group or interface first"); + return; + } +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/neighbor-remote-as/remote-as-type @@ -4809,6 +6955,32 @@ int bgp_peer_groups_peer_group_neighbor_remote_as_remote_as_type_modify( return NB_OK; } +int bgp_peer_groups_peer_group_neighbor_remote_as_remote_as_type_destroy( + struct nb_cb_destroy_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer_group *group; + + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + return NB_OK; + case NB_EV_APPLY: + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + group = peer_group_lookup(bgp, peer_str); + if (group) + peer_group_remote_as_delete(group); + + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/neighbor-remote-as/remote-as @@ -4850,12 +7022,44 @@ int bgp_peer_groups_peer_group_neighbor_remote_as_remote_as_destroy( int bgp_peer_groups_peer_group_ebgp_multihop_enabled_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool set = false; + int ret = 0; + uint8_t ttl = MAXTTL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + if (peer->conf_if) { + ret = BGP_ERR_INVALID_FOR_DIRECT_PEER; + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, + ret); + return NB_ERR_INCONSISTENCY; + } + + set = yang_dnode_get_bool(args->dnode, NULL); + + if (set) + ret = peer_ebgp_multihop_set(peer, ttl); + else + ret = peer_ebgp_multihop_unset(peer); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -4865,12 +7069,30 @@ int bgp_peer_groups_peer_group_ebgp_multihop_enabled_modify( int bgp_peer_groups_peer_group_ebgp_multihop_enabled_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret = 0; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + ret = peer_ebgp_multihop_unset(peer); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -4884,12 +7106,40 @@ int bgp_peer_groups_peer_group_ebgp_multihop_enabled_destroy( int bgp_peer_groups_peer_group_ebgp_multihop_multihop_ttl_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret = 0; + uint8_t ttl = MAXTTL; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + if (peer->conf_if) { + ret = BGP_ERR_INVALID_FOR_DIRECT_PEER; + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, + ret); + return NB_ERR_INCONSISTENCY; + } + + ttl = yang_dnode_get_uint8(args->dnode, NULL); + + ret = peer_ebgp_multihop_set(peer, ttl); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -4899,12 +7149,30 @@ int bgp_peer_groups_peer_group_ebgp_multihop_multihop_ttl_modify( int bgp_peer_groups_peer_group_ebgp_multihop_multihop_ttl_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret = 0; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + ret = peer_ebgp_multihop_unset(peer); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -4918,18 +7186,77 @@ int bgp_peer_groups_peer_group_ebgp_multihop_multihop_ttl_destroy( int bgp_peer_groups_peer_group_ebgp_multihop_disable_connected_check_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool set = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + set = yang_dnode_get_bool(args->dnode, NULL); + + if (peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_DISABLE_CONNECTED_CHECK, set, + args->errmsg, args->errmsg_len) + < 0) + return NB_ERR_INCONSISTENCY; + break; } return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/local-as + */ +void bgp_peer_groups_peer_group_local_as_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + int ret; + as_t as = 0; + const char *peer_str; + struct peer *peer = NULL; + bool no_prepend = false; + bool replace_as = false; + + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../peer-group-name"); + + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + if (yang_dnode_exists(args->dnode, "./local-as")) + as = yang_dnode_get_uint32(args->dnode, "./local-as"); + + if (yang_dnode_exists(args->dnode, "./local-as")) + as = yang_dnode_get_uint32(args->dnode, "./local-as"); + if (yang_dnode_exists(args->dnode, "./no-prepend")) + no_prepend = yang_dnode_get_bool(args->dnode, "./no-prepend"); + if (yang_dnode_exists(args->dnode, "./no-replace-as")) + replace_as = + yang_dnode_get_bool(args->dnode, "./no-replace-as"); + + if (!as && !no_prepend && !replace_as) + ret = peer_local_as_unset(peer); + else + ret = peer_local_as_set(peer, as, no_prepend, replace_as); + + bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/local-as/local-as @@ -4949,6 +7276,36 @@ int bgp_peer_groups_peer_group_local_as_local_as_modify( return NB_OK; } +int bgp_peer_groups_peer_group_local_as_local_as_destroy( + struct nb_cb_destroy_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + return NB_OK; + case NB_EV_APPLY: + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + ret = peer_local_as_unset(peer); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/local-as/no-prepend @@ -5191,6 +7548,33 @@ int bgp_peer_groups_peer_group_bfd_options_check_cp_failure_destroy( return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/admin-shutdown + */ +void bgp_peer_groups_peer_group_admin_shutdown_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + const char *message; + + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, "../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + if (yang_dnode_exists(args->dnode, "./message")) { + message = yang_dnode_get_string(args->dnode, "./message"); + peer_tx_shutdown_message_set(peer, message); + } + enable = yang_dnode_get_bool(args->dnode, "./enable"); + + peer_flag_modify_nb(bgp, peer_str, peer, PEER_FLAG_SHUTDOWN, enable, + args->errmsg, args->errmsg_len); +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/admin-shutdown/enable @@ -5210,6 +7594,21 @@ int bgp_peer_groups_peer_group_admin_shutdown_enable_modify( return NB_OK; } +int bgp_peer_groups_peer_group_admin_shutdown_enable_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/admin-shutdown/message @@ -5353,12 +7752,29 @@ int bgp_peer_groups_peer_group_graceful_restart_graceful_restart_disable_destroy int bgp_peer_groups_peer_group_timers_advertise_interval_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t routeadv; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + routeadv = yang_dnode_get_uint16(args->dnode, NULL); + + ret = peer_advertise_interval_set(peer, routeadv); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -5368,12 +7784,27 @@ int bgp_peer_groups_peer_group_timers_advertise_interval_modify( int bgp_peer_groups_peer_group_timers_advertise_interval_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + ret = peer_advertise_interval_unset(peer); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -5387,12 +7818,29 @@ int bgp_peer_groups_peer_group_timers_advertise_interval_destroy( int bgp_peer_groups_peer_group_timers_connect_time_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t connect; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + connect = yang_dnode_get_uint16(args->dnode, NULL); + + ret = peer_timers_connect_set(peer, connect); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -5402,12 +7850,27 @@ int bgp_peer_groups_peer_group_timers_connect_time_modify( int bgp_peer_groups_peer_group_timers_connect_time_destroy( struct nb_cb_destroy_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + int ret; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + ret = peer_timers_connect_unset(peer); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -5421,12 +7884,37 @@ int bgp_peer_groups_peer_group_timers_connect_time_destroy( int bgp_peer_groups_peer_group_timers_hold_time_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t keepalive = 0; + uint16_t holdtime = 0; + int ret = 0; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + keepalive = yang_dnode_get_uint16(args->dnode, "../keepalive"); + holdtime = yang_dnode_get_uint16(args->dnode, NULL); + + if (keepalive != BGP_DEFAULT_KEEPALIVE + && holdtime != BGP_DEFAULT_HOLDTIME) { + ret = peer_timers_set(peer, keepalive, holdtime); + } else + ret = peer_timers_unset(peer); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -5440,12 +7928,49 @@ int bgp_peer_groups_peer_group_timers_hold_time_modify( int bgp_peer_groups_peer_group_timers_keepalive_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + uint16_t keepalive = 0, curr_keep = 0; + uint16_t holdtime = 0; + int ret = 0; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + keepalive = yang_dnode_get_uint16(args->dnode, NULL); + holdtime = yang_dnode_get_uint16(args->dnode, "../hold-time"); + + if (keepalive != BGP_DEFAULT_KEEPALIVE + && holdtime != BGP_DEFAULT_HOLDTIME) { + if (peer->holdtime == holdtime) { + curr_keep = (keepalive < holdtime / 3 + ? keepalive + : holdtime / 3); + if (curr_keep == keepalive) { + // zlog_debug("%s holdtime %u keepalive + // %u value is already set, skipping + // update.", + // __func__, holdtime, keepalive); + return NB_OK; + } + } + ret = peer_timers_set(peer, keepalive, holdtime); + } else + ret = peer_timers_unset(peer); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + break; } @@ -5492,6 +8017,48 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_destroy( */ int bgp_peer_groups_peer_group_afi_safis_afi_safi_enabled_modify( struct nb_cb_modify_args *args) +{ + struct bgp *bgp; + const char *peer_str; + const char *af_name; + afi_t afi; + safi_t safi; + bool activate = false; + int ret = 0; + struct peer *peer; + + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + return NB_OK; + case NB_EV_APPLY: + bgp = nb_running_get_entry(args->dnode, NULL, true); + af_name = + yang_dnode_get_string(args->dnode, "../afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + peer_str = yang_dnode_get_string(args->dnode, + "../../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + activate = yang_dnode_get_bool(args->dnode, NULL); + if (activate) + ret = peer_activate(peer, afi, safi); + else + ret = peer_deactivate(peer, afi, safi); + + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) + < 0) + return NB_ERR_INCONSISTENCY; + + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_enabled_destroy( + struct nb_cb_destroy_args *args) { switch (args->event) { case NB_EV_VALIDATE: @@ -11165,6 +13732,36 @@ int bgp_global_bmp_config_target_list_afi_safis_afi_safi_ipv6_multicast_common_c return NB_OK; } +static int bgp_neighbor_afi_safi_flag_modify(struct nb_cb_modify_args *args, + uint32_t flags, bool set) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "neighbor"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + if (peer_af_flag_modify_nb(peer, afi, safi, flags, set, args->errmsg, + args->errmsg_len) + < 0) + return NB_ERR_INCONSISTENCY; + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/add-paths/path-type @@ -11263,8 +13860,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_as_path_options_repla case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11626,8 +14227,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_nexthop_self_next_hop case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11645,8 +14250,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_nexthop_self_next_hop case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11664,8 +14273,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_private_as_remove_pri case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11683,8 +14296,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_private_as_remove_pri case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11702,8 +14319,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_private_as_remove_pri case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11721,14 +14342,79 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_private_as_remove_pri case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } return NB_OK; } +static int bgp_neighbor_afi_safi_weight_modify(struct nb_cb_modify_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + uint16_t weight; + afi_t afi; + safi_t safi; + int ret; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "neighbor"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + weight = yang_dnode_get_uint16(args->dnode, NULL); + + ret = peer_weight_set(peer, afi, safi, weight); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) < 0) + return NB_ERR_INCONSISTENCY; + + return NB_OK; +} + +static int bgp_neighbor_afi_safi_weight_destroy(struct nb_cb_destroy_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + int ret; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "neighbor"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + ret = peer_weight_unset(peer, afi, safi); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) < 0) + return NB_ERR_INCONSISTENCY; + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/weight/weight-attribute @@ -11740,8 +14426,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_weight_weight_attribu case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_modify(args); + break; } @@ -11755,8 +14443,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_weight_weight_attribu case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_destroy(args); + break; } @@ -11774,8 +14464,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_route_reflector_route case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11793,8 +14487,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_route_server_route_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11812,8 +14510,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_send_community_send_c case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11831,8 +14533,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_send_community_send_e case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11850,8 +14556,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_send_community_send_l case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11869,8 +14579,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_soft_reconfiguration_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11888,8 +14602,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_attr_unchanged_as_pat case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11907,8 +14625,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_attr_unchanged_next_h case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -11926,8 +14648,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_attr_unchanged_med_un case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -12493,8 +15219,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_as_path_options_repla case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -12512,8 +15242,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_attr_unchanged_as_pat case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -12531,8 +15265,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_attr_unchanged_next_h case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -12550,8 +15288,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_attr_unchanged_med_un case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -12962,8 +15704,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_nexthop_self_next_hop case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -12981,8 +15727,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_nexthop_self_next_hop case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13000,8 +15750,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_private_as_remove_pri case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13019,8 +15773,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_private_as_remove_pri case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13038,8 +15796,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_private_as_remove_pri case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13057,8 +15819,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_private_as_remove_pri case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13076,8 +15842,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_route_reflector_route case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13095,8 +15865,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_route_server_route_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13114,8 +15888,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_send_community_send_c case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13133,8 +15911,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_send_community_send_e case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13152,8 +15934,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_send_community_send_l case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13171,8 +15957,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_soft_reconfiguration_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13190,8 +15980,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_weight_weight_attribu case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_modify(args); + break; } @@ -13205,8 +15997,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_weight_weight_attribu case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_destroy(args); + break; } @@ -13311,8 +16105,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_as_path_options_rep case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13330,8 +16128,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_attr_unchanged_as_p case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13349,8 +16151,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_attr_unchanged_next case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13368,8 +16174,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_attr_unchanged_med_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13780,8 +16590,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_nexthop_self_next_h case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13799,8 +16613,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_nexthop_self_next_h case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13818,8 +16636,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_private_as_remove_p case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13837,8 +16659,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_private_as_remove_p case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13856,8 +16682,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_private_as_remove_p case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13875,8 +16705,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_private_as_remove_p case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13894,8 +16728,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_route_reflector_rou case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13913,8 +16751,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_route_server_route_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13932,8 +16774,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_send_community_send case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13951,8 +16797,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_send_community_send case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13970,8 +16820,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_send_community_send case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -13989,8 +16843,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_soft_reconfiguratio case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14008,8 +16866,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_weight_weight_attri case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_modify(args); + break; } @@ -14023,8 +16883,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_weight_weight_attri case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_destroy(args); + break; } @@ -14129,8 +16991,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_as_path_options_rep case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14148,8 +17014,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_attr_unchanged_as_p case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14167,8 +17037,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_attr_unchanged_next case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14186,8 +17060,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_attr_unchanged_med_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14598,8 +17476,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_nexthop_self_next_h case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14617,8 +17499,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_nexthop_self_next_h case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14636,8 +17522,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_private_as_remove_p case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14655,8 +17545,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_private_as_remove_p case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14674,8 +17568,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_private_as_remove_p case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14693,8 +17591,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_private_as_remove_p case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14712,8 +17614,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_route_reflector_rou case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14731,8 +17637,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_route_server_route_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14750,8 +17660,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_send_community_send case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14769,8 +17683,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_send_community_send case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14788,8 +17706,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_send_community_send case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14807,8 +17729,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_soft_reconfiguratio case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14826,8 +17752,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_weight_weight_attri case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_modify(args); + break; } @@ -14841,8 +17769,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_weight_weight_attri case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_destroy(args); + break; } @@ -14947,8 +17877,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_optio case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14966,8 +17900,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_attr_unchange case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -14985,8 +17923,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_attr_unchange case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15004,8 +17946,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_attr_unchange case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15416,8 +18362,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_nexthop_self_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15435,8 +18385,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_nexthop_self_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15454,8 +18408,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_private_as_re case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15473,8 +18431,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_private_as_re case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15492,8 +18454,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_private_as_re case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15511,8 +18477,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_private_as_re case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15530,8 +18500,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_route_reflect case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15549,8 +18523,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_route_server_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15568,8 +18546,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_send_communit case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15587,8 +18569,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_send_communit case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15606,8 +18592,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_send_communit case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15625,8 +18615,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_soft_reconfig case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15644,8 +18638,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_weight_weight case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_modify(args); + break; } @@ -15659,8 +18655,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_weight_weight case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_destroy(args); + break; } @@ -15765,8 +18763,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_optio case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15784,8 +18786,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_attr_unchange case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15803,8 +18809,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_attr_unchange case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -15822,8 +18832,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_attr_unchange case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16234,8 +19248,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_nexthop_self_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16253,8 +19271,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_nexthop_self_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16272,8 +19294,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_private_as_re case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16291,8 +19317,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_private_as_re case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16310,8 +19340,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_private_as_re case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16329,8 +19363,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_private_as_re case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16348,8 +19386,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_route_reflect case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16367,8 +19409,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_route_server_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16386,8 +19432,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_send_communit case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16405,8 +19455,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_send_communit case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16424,8 +19478,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_send_communit case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16443,8 +19501,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_soft_reconfig case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16462,8 +19524,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_weight_weight case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_modify(args); + break; } @@ -16477,8 +19541,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_weight_weight case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_destroy(args); + break; } @@ -16583,8 +19649,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_as_path_options case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16602,8 +19672,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_attr_unchanged_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16621,8 +19695,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_attr_unchanged_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16640,8 +19718,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_attr_unchanged_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16950,8 +20032,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_nexthop_self_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16969,8 +20055,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_nexthop_self_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -16988,8 +20078,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17007,8 +20101,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17026,8 +20124,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17045,8 +20147,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17064,8 +20170,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_route_reflector case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17083,8 +20193,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_route_server_ro case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17102,8 +20216,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_send_community_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17121,8 +20239,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_send_community_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17140,8 +20262,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_send_community_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17159,8 +20285,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_soft_reconfigur case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17178,8 +20308,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_weight_weight_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_modify(args); + break; } @@ -17193,8 +20325,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_weight_weight_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_destroy(args); + break; } @@ -17299,8 +20433,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_as_path_options case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17318,8 +20456,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_attr_unchanged_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17337,8 +20479,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_attr_unchanged_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17356,8 +20502,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_attr_unchanged_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17666,8 +20816,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_nexthop_self_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17685,8 +20839,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_nexthop_self_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17704,8 +20862,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17723,8 +20885,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17742,8 +20908,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17761,8 +20931,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17780,8 +20954,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_route_reflector case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17799,8 +20977,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_route_server_ro case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17818,8 +21000,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_send_community_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17837,8 +21023,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_send_community_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17856,8 +21046,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_send_community_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17875,8 +21069,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_soft_reconfigur case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -17894,8 +21092,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_weight_weight_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_modify(args); + break; } @@ -17909,8 +21109,10 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_weight_weight_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_weight_destroy(args); + break; } @@ -17996,8 +21198,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l2vpn_evpn_as_path_options_replace case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18015,8 +21221,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l2vpn_evpn_attr_unchanged_as_path_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18034,8 +21244,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l2vpn_evpn_attr_unchanged_next_hop case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18053,8 +21267,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l2vpn_evpn_attr_unchanged_med_unch case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18072,8 +21290,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l2vpn_evpn_nexthop_self_next_hop_s case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18091,8 +21313,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l2vpn_evpn_nexthop_self_next_hop_s case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18110,8 +21336,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l2vpn_evpn_route_reflector_route_r case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18129,8 +21359,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l2vpn_evpn_route_server_route_serv case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18148,8 +21382,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l2vpn_evpn_soft_reconfiguration_mo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18167,8 +21405,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_flowspec_route_reflector_rout case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18186,8 +21428,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_flowspec_route_server_route_s case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18205,8 +21451,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_flowspec_soft_reconfiguration case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18224,8 +21474,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_flowspec_route_reflector_rout case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18243,8 +21497,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_flowspec_route_server_route_s case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18262,14 +21520,49 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_flowspec_soft_reconfiguration case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } return NB_OK; } +static int +bgp_unnumbered_neighbor_afi_safi_flag_modify(struct nb_cb_modify_args *args, + uint32_t flags, bool set) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "unnumbered-neighbor"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./interface"); + peer = bgp_unnumbered_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + if (peer_af_flag_modify_nb(peer, afi, safi, flags, set, args->errmsg, + args->errmsg_len) + < 0) + return NB_ERR_INCONSISTENCY; + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/add-paths/path-type @@ -18368,8 +21661,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_as_path_op case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18731,8 +22028,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_nexthop_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18750,8 +22051,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_nexthop_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18769,8 +22074,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_private_as case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18788,8 +22097,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_private_as case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18807,8 +22120,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_private_as case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18826,14 +22143,80 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_private_as case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } return NB_OK; } +static int +bgp_unnumbered_neighbor_afi_safi_weight_modify(struct nb_cb_modify_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const char *af_name; + uint16_t weight; + afi_t afi; + safi_t safi; + const struct lyd_node *nbr_af_dnode; + int ret; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "unnumbered-neighbor"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./interface"); + peer = bgp_unnumbered_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + weight = yang_dnode_get_uint16(args->dnode, NULL); + + ret = peer_weight_set(peer, afi, safi, weight); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) < 0) + return NB_ERR_INCONSISTENCY; + + return NB_OK; +} + +static int +bgp_unnumbered_neighbor_afi_safi_weight_destroy(struct nb_cb_destroy_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + int ret; + + bgp = nb_running_get_entry(args->dnode, NULL, true); + nbr_dnode = yang_dnode_get_parent(args->dnode, "unnumbered-neighbor"); + peer_str = yang_dnode_get_string(nbr_dnode, "./interface"); + peer = bgp_unnumbered_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + ret = peer_weight_unset(peer, afi, safi); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) < 0) + return NB_ERR_INCONSISTENCY; + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/weight/weight-attribute @@ -18845,8 +22228,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_weight_wei case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); + break; } @@ -18860,8 +22245,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_weight_wei case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); + break; } @@ -18879,8 +22266,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_route_refl case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18898,8 +22289,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_route_serv case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18917,8 +22312,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_send_commu case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18936,8 +22335,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_send_commu case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18955,8 +22358,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_send_commu case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18974,8 +22381,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_soft_recon case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -18993,8 +22404,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_attr_uncha case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -19012,8 +22427,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_attr_uncha case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -19031,8 +22450,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_attr_uncha case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -19598,8 +23021,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_as_path_op case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -19617,8 +23044,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_attr_uncha case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -19636,8 +23067,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_attr_uncha case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -19655,8 +23090,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_attr_uncha case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20067,8 +23506,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_nexthop_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20086,8 +23529,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_nexthop_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20105,8 +23552,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_private_as case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20124,8 +23575,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_private_as case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20143,8 +23598,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_private_as case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20162,8 +23621,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_private_as case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20181,8 +23644,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_route_refl case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20200,8 +23667,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_route_serv case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20219,8 +23690,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_send_commu case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20238,8 +23713,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_send_commu case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20257,8 +23736,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_send_commu case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20276,8 +23759,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_soft_recon case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20295,8 +23782,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_weight_wei case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); + break; } @@ -20310,8 +23799,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_weight_wei case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); + break; } @@ -20416,8 +23907,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_as_path_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20435,8 +23930,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_attr_unc case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20454,8 +23953,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_attr_unc case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20473,8 +23976,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_attr_unc case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20885,8 +24392,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_nexthop_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20904,8 +24415,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_nexthop_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20923,8 +24438,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_private_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20942,8 +24461,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_private_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20961,8 +24484,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_private_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20980,8 +24507,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_private_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -20999,8 +24530,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_route_re case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21018,8 +24553,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_route_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21037,8 +24576,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_send_com case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21056,8 +24599,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_send_com case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21075,8 +24622,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_send_com case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21094,8 +24645,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_soft_rec case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21113,8 +24668,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_weight_w case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); + break; } @@ -21128,8 +24685,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_weight_w case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); + break; } @@ -21234,8 +24793,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_as_path_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21253,8 +24816,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_attr_unc case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21272,8 +24839,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_attr_unc case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21291,8 +24862,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_attr_unc case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21703,8 +25278,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_nexthop_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21722,8 +25301,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_nexthop_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21741,8 +25324,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_private_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21760,8 +25347,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_private_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21779,8 +25370,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_private_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21798,8 +25393,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_private_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21817,8 +25416,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_route_re case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21836,8 +25439,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_route_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21855,8 +25462,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_send_com case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21874,8 +25485,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_send_com case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21893,8 +25508,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_send_com case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21912,8 +25531,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_soft_rec case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -21931,8 +25554,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_weight_w case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); + break; } @@ -21946,8 +25571,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_weight_w case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); + break; } @@ -22052,8 +25679,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_as case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22071,8 +25702,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_at case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22090,8 +25725,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_at case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22109,8 +25748,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_at case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22521,8 +26164,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22540,8 +26187,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22559,8 +26210,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22578,8 +26233,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22597,8 +26256,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22616,8 +26279,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22635,8 +26302,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_ro case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22654,8 +26325,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_ro case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22673,8 +26348,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22692,8 +26371,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22711,8 +26394,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22730,8 +26417,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_so case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22749,8 +26440,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_we case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); + break; } @@ -22764,8 +26457,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_we case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); + break; } @@ -22870,8 +26565,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_as case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22889,8 +26588,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_at case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22908,8 +26611,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_at case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -22927,8 +26634,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_at case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23339,8 +27050,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23358,8 +27073,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23377,8 +27096,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23396,8 +27119,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23415,8 +27142,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23434,8 +27165,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23453,8 +27188,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_ro case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23472,8 +27211,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_ro case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23491,8 +27234,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23510,8 +27257,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23529,8 +27280,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23548,8 +27303,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_so case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23567,8 +27326,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_we case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); + break; } @@ -23582,8 +27343,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_we case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); + break; } @@ -23688,8 +27451,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_as_p case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23707,8 +27474,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_attr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23726,8 +27497,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_attr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -23745,8 +27520,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_attr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24055,8 +27834,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_next case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24074,8 +27857,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_next case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24093,8 +27880,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_priv case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24112,8 +27903,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_priv case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24131,8 +27926,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_priv case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24150,8 +27949,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_priv case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24169,8 +27972,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_rout case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24188,8 +27995,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_rout case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24207,8 +28018,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_send case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24226,8 +28041,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_send case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24245,8 +28064,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_send case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24264,8 +28087,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_soft case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24283,8 +28110,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_weig case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); + break; } @@ -24298,8 +28127,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_weig case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); + break; } @@ -24404,8 +28235,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_as_p case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24423,8 +28258,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_attr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24442,8 +28281,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_attr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24461,8 +28304,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_attr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24771,8 +28618,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_next case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24790,8 +28641,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_next case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24809,8 +28664,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_priv case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24828,8 +28687,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_priv case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24847,8 +28710,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_priv case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24866,8 +28733,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_priv case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24885,8 +28756,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_rout case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24904,8 +28779,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_rout case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24923,8 +28802,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_send case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24942,8 +28825,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_send case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24961,8 +28848,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_send case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24980,8 +28871,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_soft case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -24999,8 +28894,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_weig case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); + break; } @@ -25014,8 +28911,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_weig case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); + break; } @@ -25101,8 +29000,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l2vpn_evpn_as_path_opti case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25120,8 +29023,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l2vpn_evpn_attr_unchang case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25139,8 +29046,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l2vpn_evpn_attr_unchang case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25158,8 +29069,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l2vpn_evpn_attr_unchang case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25177,8 +29092,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l2vpn_evpn_nexthop_self case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25196,8 +29115,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l2vpn_evpn_nexthop_self case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25215,8 +29138,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l2vpn_evpn_route_reflec case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25234,8 +29161,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l2vpn_evpn_route_server case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25253,8 +29184,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l2vpn_evpn_soft_reconfi case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25272,8 +29207,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_flowspec_route_ref case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25291,8 +29230,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_flowspec_route_ser case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25310,8 +29253,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_flowspec_soft_reco case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25329,8 +29276,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_flowspec_route_ref case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25348,8 +29299,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_flowspec_route_ser case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25367,14 +29322,46 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_flowspec_soft_reco case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_unnumbered_neighbor_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } return NB_OK; } +static int bgp_peer_group_afi_safi_flag_modify(struct nb_cb_modify_args *args, + uint32_t flags, bool set) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "peer-group"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + if (peer_af_flag_modify_nb(peer, afi, safi, flags, set, args->errmsg, + args->errmsg_len) + < 0) + return NB_ERR_INCONSISTENCY; + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/add-paths/path-type @@ -25473,8 +29460,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_as_path_options_r case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25836,8 +29827,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_nexthop_self_next case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25855,8 +29850,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_nexthop_self_next case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25874,8 +29873,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_private_as_remove case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25893,8 +29896,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_private_as_remove case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25912,8 +29919,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_private_as_remove case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -25931,14 +29942,77 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_private_as_remove case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } return NB_OK; } +static int bgp_peer_group_afi_safi_weight_modify(struct nb_cb_modify_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + uint16_t weight; + afi_t afi; + safi_t safi; + int ret; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(args->dnode, "peer-group"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + weight = yang_dnode_get_uint16(args->dnode, NULL); + + ret = peer_weight_set(peer, afi, safi, weight); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) < 0) + return NB_ERR_INCONSISTENCY; + + return NB_OK; +} + +static int +bgp_peer_group_afi_safi_weight_destroy(struct nb_cb_destroy_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + int ret; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "peer-group"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + + ret = peer_weight_unset(peer, afi, safi); + if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) < 0) + return NB_ERR_INCONSISTENCY; + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/weight/weight-attribute @@ -25950,8 +30024,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_weight_weight_att case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_modify(args); + break; } @@ -25965,8 +30041,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_weight_weight_att case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_destroy(args); + break; } @@ -25984,8 +30062,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_route_reflector_r case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -26003,8 +30085,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_route_server_rout case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -26022,8 +30108,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_send_community_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -26041,8 +30131,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_send_community_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -26060,8 +30154,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_send_community_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -26079,8 +30177,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_soft_reconfigurat case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -26098,8 +30200,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_attr_unchanged_as case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -26117,8 +30223,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_attr_unchanged_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -26136,8 +30246,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_attr_unchanged_me case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -26703,8 +30817,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_as_path_options_r case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -26722,8 +30840,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_attr_unchanged_as case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -26741,8 +30863,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_attr_unchanged_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -26760,8 +30886,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_attr_unchanged_me case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27172,8 +31302,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_nexthop_self_next case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27191,8 +31325,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_nexthop_self_next case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27210,8 +31348,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_private_as_remove case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27229,8 +31371,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_private_as_remove case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27248,8 +31394,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_private_as_remove case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27267,8 +31417,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_private_as_remove case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27286,8 +31440,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_route_reflector_r case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27305,8 +31463,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_route_server_rout case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27324,8 +31486,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_send_community_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27343,8 +31509,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_send_community_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27362,8 +31532,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_send_community_se case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27381,8 +31555,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_soft_reconfigurat case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27400,8 +31578,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_weight_weight_att case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_modify(args); + break; } @@ -27415,8 +31595,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_weight_weight_att case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_destroy(args); + break; } @@ -27521,8 +31703,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_as_path_options case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27540,8 +31726,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_attr_unchanged_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27559,8 +31749,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_attr_unchanged_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27578,8 +31772,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_attr_unchanged_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -27990,8 +32188,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_nexthop_self_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28009,8 +32211,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_nexthop_self_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28028,8 +32234,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28047,8 +32257,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28066,8 +32280,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28085,8 +32303,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28104,8 +32326,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_route_reflector case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28123,8 +32349,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_route_server_ro case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28142,8 +32372,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_send_community_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28161,8 +32395,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_send_community_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28180,8 +32418,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_send_community_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28199,8 +32441,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_soft_reconfigur case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28218,8 +32464,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_weight_weight_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_modify(args); + break; } @@ -28233,8 +32481,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_weight_weight_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_destroy(args); + break; } @@ -28339,8 +32589,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_as_path_options case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28358,8 +32612,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_attr_unchanged_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28377,8 +32635,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_attr_unchanged_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28396,8 +32658,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_attr_unchanged_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28808,8 +33074,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_nexthop_self_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28827,8 +33097,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_nexthop_self_ne case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28846,8 +33120,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28865,8 +33143,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28884,8 +33166,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28903,8 +33189,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_private_as_remo case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28922,8 +33212,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_route_reflector case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28941,8 +33235,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_route_server_ro case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28960,8 +33258,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_send_community_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28979,8 +33281,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_send_community_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -28998,8 +33304,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_send_community_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29017,8 +33327,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_soft_reconfigur case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29036,8 +33350,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_weight_weight_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_modify(args); + break; } @@ -29051,8 +33367,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_weight_weight_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_destroy(args); + break; } @@ -29157,8 +33475,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_o case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29176,8 +33498,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_attr_unch case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29195,8 +33521,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_attr_unch case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29214,8 +33544,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_attr_unch case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29626,8 +33960,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_nexthop_s case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29645,8 +33983,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_nexthop_s case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29664,8 +34006,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_private_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29683,8 +34029,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_private_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29702,8 +34052,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_private_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29721,8 +34075,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_private_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29740,8 +34098,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_route_ref case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29759,8 +34121,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_route_ser case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29778,8 +34144,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_send_comm case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29797,8 +34167,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_send_comm case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29816,8 +34190,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_send_comm case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29835,8 +34213,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_soft_reco case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29854,8 +34236,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_weight_we case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_modify(args); + break; } @@ -29869,8 +34253,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_weight_we case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_destroy(args); + break; } @@ -29975,8 +34361,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_o case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -29994,8 +34384,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_attr_unch case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30013,8 +34407,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_attr_unch case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30032,8 +34430,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_attr_unch case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30444,8 +34846,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_nexthop_s case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30463,8 +34869,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_nexthop_s case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30482,8 +34892,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_private_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30501,8 +34915,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_private_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30520,8 +34938,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_private_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30539,8 +34961,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_private_a case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30558,8 +34984,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_route_ref case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30577,8 +35007,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_route_ser case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30596,8 +35030,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_send_comm case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30615,8 +35053,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_send_comm case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30634,8 +35076,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_send_comm case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30653,8 +35099,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_soft_reco case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30672,8 +35122,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_weight_we case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_modify(args); + break; } @@ -30687,8 +35139,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_weight_we case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_destroy(args); + break; } @@ -30793,8 +35247,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_as_path_opt case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30812,8 +35270,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_attr_unchan case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30831,8 +35293,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_attr_unchan case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -30850,8 +35316,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_attr_unchan case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31160,8 +35630,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_nexthop_sel case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31179,8 +35653,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_nexthop_sel case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31198,8 +35676,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_private_as_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31217,8 +35699,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_private_as_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31236,8 +35722,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_private_as_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31255,8 +35745,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_private_as_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31274,8 +35768,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_route_refle case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31293,8 +35791,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_route_serve case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31312,8 +35814,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_send_commun case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31331,8 +35837,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_send_commun case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31350,8 +35860,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_send_commun case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31369,8 +35883,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_soft_reconf case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31388,8 +35906,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_weight_weig case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_modify(args); + break; } @@ -31403,8 +35923,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_weight_weig case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_destroy(args); + break; } @@ -31509,8 +36031,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_as_path_opt case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31528,8 +36054,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_attr_unchan case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31547,8 +36077,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_attr_unchan case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31566,8 +36100,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_attr_unchan case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31876,8 +36414,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_nexthop_sel case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31895,8 +36437,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_nexthop_sel case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31914,8 +36460,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_private_as_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31933,8 +36483,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_private_as_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31952,8 +36506,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_private_as_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31971,8 +36529,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_private_as_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -31990,8 +36552,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_route_refle case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32009,8 +36575,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_route_serve case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32028,8 +36598,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_send_commun case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32047,8 +36621,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_send_commun case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_EXT_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32066,8 +36644,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_send_commun case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SEND_LARGE_COMMUNITY, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32085,8 +36667,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_soft_reconf case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32104,8 +36690,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_weight_weig case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_modify(args); + break; } @@ -32119,8 +36707,10 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_weight_weig case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_weight_destroy(args); + break; } @@ -32206,8 +36796,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l2vpn_evpn_as_path_options_rep case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_OVERRIDE, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32225,8 +36819,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l2vpn_evpn_attr_unchanged_as_p case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_AS_PATH_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32244,8 +36842,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l2vpn_evpn_attr_unchanged_next case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32263,8 +36865,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l2vpn_evpn_attr_unchanged_med_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_MED_UNCHANGED, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32282,8 +36888,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l2vpn_evpn_nexthop_self_next_h case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32301,8 +36911,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l2vpn_evpn_nexthop_self_next_h case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_FORCE_NEXTHOP_SELF, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32320,8 +36934,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l2vpn_evpn_route_reflector_rou case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32339,8 +36957,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l2vpn_evpn_route_server_route_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32358,8 +36980,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l2vpn_evpn_soft_reconfiguratio case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32377,8 +37003,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_flowspec_route_reflector_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32396,8 +37026,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_flowspec_route_server_rou case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32415,8 +37049,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_flowspec_soft_reconfigura case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32434,8 +37072,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_flowspec_route_reflector_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_REFLECTOR_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32453,8 +37095,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_flowspec_route_server_rou case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_RSERVER_CLIENT, + yang_dnode_get_bool(args->dnode, NULL)); + break; } @@ -32472,8 +37118,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_flowspec_soft_reconfigura case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + return bgp_peer_group_afi_safi_flag_modify( + args, PEER_FLAG_SOFT_RECONFIG, + yang_dnode_get_bool(args->dnode, NULL)); + break; } diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 00e781d804..c97d241f27 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -154,6 +154,10 @@ static int bgp_show_neighbor_graceful_restart_afi_all(struct vty *vty, const char *ip_str, afi_t afi, bool use_json); +static int peer_and_group_lookup_nb(struct vty *vty, const char *peer_str, + char *base_xpath, int xpath_len, + char *abs_xpath); + static enum node_type bgp_node_type(afi_t afi, safi_t safi) { switch (afi) { @@ -587,7 +591,7 @@ int bgp_vty_find_and_parse_afi_safi_bgp(struct vty *vty, return *idx; } -static bool peer_address_self_check(struct bgp *bgp, union sockunion *su) +bool peer_address_self_check(struct bgp *bgp, union sockunion *su) { struct interface *ifp = NULL; @@ -604,49 +608,6 @@ static bool peer_address_self_check(struct bgp *bgp, union sockunion *su) return false; } -/* Utility function for looking up peer from VTY. */ -/* This is used only for configuration, so disallow if attempted on - * a dynamic neighbor. - */ -static struct peer *peer_lookup_vty(struct vty *vty, const char *ip_str) -{ - struct bgp *bgp = VTY_GET_CONTEXT(bgp); - int ret; - union sockunion su; - struct peer *peer; - - if (!bgp) { - return NULL; - } - - ret = str2sockunion(ip_str, &su); - if (ret < 0) { - peer = peer_lookup_by_conf_if(bgp, ip_str); - if (!peer) { - if ((peer = peer_lookup_by_hostname(bgp, ip_str)) - == NULL) { - vty_out(vty, - "%% Malformed address or name: %s\n", - ip_str); - return NULL; - } - } - } else { - peer = peer_lookup(bgp, &su); - if (!peer) { - vty_out(vty, - "%% Specify remote-as or peer-group commands first\n"); - return NULL; - } - if (peer_dynamic_neighbor(peer)) { - vty_out(vty, - "%% Operation not allowed on a dynamic neighbor\n"); - return NULL; - } - } - return peer; -} - /* Utility function for looking up peer or peer group. */ /* This is used only for configuration, so disallow if attempted on * a dynamic neighbor. @@ -693,6 +654,98 @@ struct peer *peer_and_group_lookup_vty(struct vty *vty, const char *peer_str) return NULL; } +int bgp_nb_errmsg_return(char *errmsg, size_t errmsg_len, int ret) +{ + const char *str = NULL; + + switch (ret) { + case BGP_ERR_INVALID_VALUE: + str = "Invalid value"; + break; + case BGP_ERR_INVALID_FLAG: + str = "Invalid flag"; + break; + case BGP_ERR_PEER_GROUP_SHUTDOWN: + str = "Peer-group has been shutdown. Activate the peer-group first"; + break; + case BGP_ERR_PEER_FLAG_CONFLICT: + str = "Can't set override-capability and strict-capability-match at the same time"; + break; + case BGP_ERR_PEER_GROUP_NO_REMOTE_AS: + str = "Specify remote-as or peer-group remote AS first"; + break; + case BGP_ERR_PEER_GROUP_CANT_CHANGE: + str = "Cannot change the peer-group. Deconfigure first"; + break; + case BGP_ERR_PEER_GROUP_MISMATCH: + str = "Peer is not a member of this peer-group"; + break; + case BGP_ERR_PEER_FILTER_CONFLICT: + str = "Prefix/distribute list can not co-exist"; + break; + case BGP_ERR_NOT_INTERNAL_PEER: + str = "Invalid command. Not an internal neighbor"; + break; + case BGP_ERR_REMOVE_PRIVATE_AS: + str = "remove-private-AS cannot be configured for IBGP peers"; + break; + case BGP_ERR_LOCAL_AS_ALLOWED_ONLY_FOR_EBGP: + str = "Local-AS allowed only for EBGP peers"; + break; + case BGP_ERR_CANNOT_HAVE_LOCAL_AS_SAME_AS: + str = "Cannot have local-as same as BGP AS number"; + break; + case BGP_ERR_TCPSIG_FAILED: + str = "Error while applying TCP-Sig to session(s)"; + break; + case BGP_ERR_NO_EBGP_MULTIHOP_WITH_TTLHACK: + str = "ebgp-multihop and ttl-security cannot be configured together"; + break; + case BGP_ERR_NO_IBGP_WITH_TTLHACK: + str = "ttl-security only allowed for EBGP peers"; + break; + case BGP_ERR_AS_OVERRIDE: + str = "as-override cannot be configured for IBGP peers"; + break; + case BGP_ERR_INVALID_DYNAMIC_NEIGHBORS_LIMIT: + str = "Invalid limit for number of dynamic neighbors"; + break; + case BGP_ERR_DYNAMIC_NEIGHBORS_RANGE_EXISTS: + str = "Dynamic neighbor listen range already exists"; + break; + case BGP_ERR_INVALID_FOR_DYNAMIC_PEER: + str = "Operation not allowed on a dynamic neighbor"; + break; + case BGP_ERR_INVALID_FOR_DIRECT_PEER: + str = "Operation not allowed on a directly connected neighbor"; + break; + case BGP_ERR_PEER_SAFI_CONFLICT: + str = GR_INVALID; + break; + case BGP_ERR_GR_INVALID_CMD: + str = "The Graceful Restart command used is not valid at this moment."; + break; + case BGP_ERR_GR_OPERATION_FAILED: + str = "The Graceful Restart Operation failed due to an err."; + break; + case BGP_GR_NO_OPERATION: + str = GR_NO_OPER; + break; + case BGP_ERR_PEER_GROUP_MEMBER: + str = "Peer-group member cannot override remote-as of peer-group"; + break; + case BGP_ERR_PEER_GROUP_PEER_TYPE_DIFFERENT: + str = "Peer-group members must be all internal or all external"; + break; + } + if (str) { + snprintf(errmsg, errmsg_len, "%s", str); + return -1; + } + + return 0; +} + int bgp_vty_return(struct vty *vty, int ret) { const char *str = NULL; @@ -4067,70 +4120,6 @@ void cli_show_router_global_ebgp_multihop_connected_route_check( vty_out(vty, " bgp disable-ebgp-connected-route-check\n"); } -static int peer_remote_as_vty(struct vty *vty, const char *peer_str, - const char *as_str, afi_t afi, safi_t safi) -{ - VTY_DECLVAR_CONTEXT(bgp, bgp); - int ret; - as_t as; - int as_type = AS_SPECIFIED; - union sockunion su; - - if (as_str[0] == 'i') { - as = 0; - as_type = AS_INTERNAL; - } else if (as_str[0] == 'e') { - as = 0; - as_type = AS_EXTERNAL; - } else { - /* Get AS number. */ - as = strtoul(as_str, NULL, 10); - } - - /* If peer is peer group or interface peer, call proper function. */ - ret = str2sockunion(peer_str, &su); - if (ret < 0) { - struct peer *peer; - - /* Check if existing interface peer */ - peer = peer_lookup_by_conf_if(bgp, peer_str); - - ret = peer_remote_as(bgp, NULL, peer_str, &as, as_type, afi, - safi); - - /* if not interface peer, check peer-group settings */ - if (ret < 0 && !peer) { - ret = peer_group_remote_as(bgp, peer_str, &as, as_type); - if (ret < 0) { - vty_out(vty, - "%% Create the peer-group or interface first\n"); - return CMD_WARNING_CONFIG_FAILED; - } - return CMD_SUCCESS; - } - } else { - if (peer_address_self_check(bgp, &su)) { - vty_out(vty, - "%% Can not configure the local system as neighbor\n"); - return CMD_WARNING_CONFIG_FAILED; - } - ret = peer_remote_as(bgp, &su, NULL, &as, as_type, afi, safi); - } - - /* This peer belongs to peer group. */ - switch (ret) { - case BGP_ERR_PEER_GROUP_MEMBER: - vty_out(vty, - "%% Peer-group member cannot override remote-as of peer-group\n"); - return CMD_WARNING_CONFIG_FAILED; - case BGP_ERR_PEER_GROUP_PEER_TYPE_DIFFERENT: - vty_out(vty, - "%% Peer-group members must be all internal or all external\n"); - return CMD_WARNING_CONFIG_FAILED; - } - return bgp_vty_return(vty, ret); -} - DEFUN_YANG(bgp_default_shutdown, bgp_default_shutdown_cmd, "[no] bgp default shutdown", @@ -4196,31 +4185,67 @@ ALIAS(no_bgp_shutdown, no_bgp_shutdown_msg_cmd, "Administrative shutdown of the BGP instance\n" "Add a shutdown message (RFC 8203)\n" "Shutdown message\n") -DEFUN (neighbor_remote_as, - neighbor_remote_as_cmd, - "neighbor remote-as <(1-4294967295)|internal|external>", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Specify a BGP neighbor\n" - AS_STR - "Internal BGP peer\n" - "External BGP peer\n") +DEFUN_YANG(neighbor_remote_as, + neighbor_remote_as_cmd, + "neighbor remote-as <(1-4294967295)|internal|external>", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Specify a BGP neighbor\n" AS_STR + "Internal BGP peer\n" + "External BGP peer\n") { int idx_peer = 1; int idx_remote_as = 3; - return peer_remote_as_vty(vty, argv[idx_peer]->arg, - argv[idx_remote_as]->arg, AFI_IP, - SAFI_UNICAST); + char base_xpath[XPATH_MAXLEN]; + char unnbr_xpath[XPATH_MAXLEN]; + char prgrp_xpath[XPATH_MAXLEN]; + union sockunion su; + const char *as_type_str = "as-specified"; + + if (str2sockunion(argv[idx_peer]->arg, &su) < 0) { + snprintf(unnbr_xpath, sizeof(unnbr_xpath), + FRR_BGP_NEIGHBOR_UNNUM_XPATH, argv[idx_peer]->arg, ""); + + snprintf(prgrp_xpath, sizeof(prgrp_xpath), + FRR_BGP_PEER_GROUP_XPATH, argv[idx_peer]->arg, ""); + + if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s", + VTY_CURR_XPATH, unnbr_xpath + 1)) { + strlcpy(base_xpath, unnbr_xpath, sizeof(base_xpath)); + } else if (yang_dnode_exists(vty->candidate_config->dnode, + "%s%s", VTY_CURR_XPATH, + prgrp_xpath + 1)) { + snprintf(base_xpath, sizeof(base_xpath), + FRR_BGP_PEER_GROUP_XPATH, argv[idx_peer]->arg, + ""); + } else { + vty_out(vty, + "%% Create the peer-group or interface first\n"); + return CMD_WARNING_CONFIG_FAILED; + } + } else { + snprintf(base_xpath, sizeof(base_xpath), + FRR_BGP_NEIGHBOR_NUM_XPATH, argv[idx_peer]->arg, ""); + } + + if (argv[idx_remote_as]->arg[0] == 'i') { + as_type_str = "internal"; + } else if (argv[idx_remote_as]->arg[0] == 'e') { + as_type_str = "external"; + } else { + nb_cli_enqueue_change(vty, "./neighbor-remote-as/remote-as", + NB_OP_MODIFY, argv[idx_remote_as]->arg); + } + nb_cli_enqueue_change(vty, "./neighbor-remote-as/remote-as-type", + NB_OP_MODIFY, as_type_str); + + return nb_cli_apply_changes(vty, base_xpath); } -static int peer_conf_interface_get(struct vty *vty, const char *conf_if, - afi_t afi, safi_t safi, int v6only, - const char *peer_group_name, - const char *as_str) +int peer_conf_interface_create(struct bgp *bgp, const char *conf_if, afi_t afi, + safi_t safi, bool v6only, + const char *peer_group_name, int as_type, + as_t as, char *errmsg, size_t errmsg_len) { - VTY_DECLVAR_CONTEXT(bgp, bgp); - as_t as = 0; - int as_type = AS_UNSPECIFIED; struct peer *peer; struct peer_group *group; int ret = 0; @@ -4229,25 +4254,14 @@ static int peer_conf_interface_get(struct vty *vty, const char *conf_if, group = peer_group_lookup(bgp, conf_if); if (group) { - vty_out(vty, "%% Name conflict with peer-group \n"); - return CMD_WARNING_CONFIG_FAILED; - } - - if (as_str) { - if (as_str[0] == 'i') { - as_type = AS_INTERNAL; - } else if (as_str[0] == 'e') { - as_type = AS_EXTERNAL; - } else { - /* Get AS number. */ - as = strtoul(as_str, NULL, 10); - as_type = AS_SPECIFIED; - } + snprintf(errmsg, errmsg_len, + "Name conflict with peer-group \n"); + return -1; } peer = peer_lookup_by_conf_if(bgp, conf_if); if (peer) { - if (as_str) + if (as_type != AS_UNSPECIFIED) ret = peer_remote_as(bgp, NULL, conf_if, &as, as_type, afi, safi); } else { @@ -4260,8 +4274,9 @@ static int peer_conf_interface_get(struct vty *vty, const char *conf_if, as_type, afi, safi, NULL); if (!peer) { - vty_out(vty, "%% BGP failed to create peer\n"); - return CMD_WARNING_CONFIG_FAILED; + snprintf(errmsg, errmsg_len, + "BGP failed to create peer\n"); + return -1; } if (v6only) @@ -4304,122 +4319,156 @@ static int peer_conf_interface_get(struct vty *vty, const char *conf_if, if (peer_group_name) { group = peer_group_lookup(bgp, peer_group_name); if (!group) { - vty_out(vty, "%% Configure the peer-group first\n"); - return CMD_WARNING_CONFIG_FAILED; + snprintf(errmsg, errmsg_len, + "Configure the peer-group first\n"); + return -1; } ret = peer_group_bind(bgp, &su, peer, group, &as); } - return bgp_vty_return(vty, ret); + return bgp_nb_errmsg_return(errmsg, errmsg_len, ret); } -DEFUN (neighbor_interface_config, - neighbor_interface_config_cmd, - "neighbor WORD interface [peer-group PGNAME]", - NEIGHBOR_STR - "Interface name or neighbor tag\n" - "Enable BGP on interface\n" - "Member of the peer-group\n" - "Peer-group name\n") +DEFUN_YANG(neighbor_interface_config, neighbor_interface_config_cmd, + "neighbor WORD interface [peer-group PGNAME]", + NEIGHBOR_STR + "Interface name or neighbor tag\n" + "Enable BGP on interface\n" + "Member of the peer-group\n" + "Peer-group name\n") { int idx_word = 1; int idx_peer_group_word = 4; + char base_xpath[XPATH_MAXLEN]; + snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_NEIGHBOR_UNNUM_XPATH, + argv[idx_word]->arg, ""); + + nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); if (argc > idx_peer_group_word) - return peer_conf_interface_get( - vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, 0, - argv[idx_peer_group_word]->arg, NULL); - else - return peer_conf_interface_get(vty, argv[idx_word]->arg, AFI_IP, - SAFI_UNICAST, 0, NULL, NULL); + nb_cli_enqueue_change(vty, "./peer-group", NB_OP_MODIFY, + argv[idx_peer_group_word]->arg); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (neighbor_interface_config_v6only, - neighbor_interface_config_v6only_cmd, - "neighbor WORD interface v6only [peer-group PGNAME]", - NEIGHBOR_STR - "Interface name or neighbor tag\n" - "Enable BGP on interface\n" - "Enable BGP with v6 link-local only\n" - "Member of the peer-group\n" - "Peer-group name\n") +DEFUN_YANG(neighbor_interface_config_v6only, + neighbor_interface_config_v6only_cmd, + "neighbor WORD interface v6only [peer-group PGNAME]", + NEIGHBOR_STR + "Interface name or neighbor tag\n" + "Enable BGP on interface\n" + "Enable BGP with v6 link-local only\n" + "Member of the peer-group\n" + "Peer-group name\n") { int idx_word = 1; int idx_peer_group_word = 5; + char base_xpath[XPATH_MAXLEN]; + snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_NEIGHBOR_UNNUM_XPATH, + argv[idx_word]->arg, ""); + + nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); if (argc > idx_peer_group_word) - return peer_conf_interface_get( - vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, 1, - argv[idx_peer_group_word]->arg, NULL); + nb_cli_enqueue_change(vty, "./peer-group", NB_OP_MODIFY, + argv[idx_peer_group_word]->arg); - return peer_conf_interface_get(vty, argv[idx_word]->arg, AFI_IP, - SAFI_UNICAST, 1, NULL, NULL); + nb_cli_enqueue_change(vty, "./v6only", NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (neighbor_interface_config_remote_as, - neighbor_interface_config_remote_as_cmd, - "neighbor WORD interface remote-as <(1-4294967295)|internal|external>", - NEIGHBOR_STR - "Interface name or neighbor tag\n" - "Enable BGP on interface\n" - "Specify a BGP neighbor\n" - AS_STR - "Internal BGP peer\n" - "External BGP peer\n") +DEFUN_YANG( + neighbor_interface_config_remote_as, + neighbor_interface_config_remote_as_cmd, + "neighbor WORD interface remote-as <(1-4294967295)|internal|external>", + NEIGHBOR_STR + "Interface name or neighbor tag\n" + "Enable BGP on interface\n" + "Specify a BGP neighbor\n" AS_STR + "Internal BGP peer\n" + "External BGP peer\n") { int idx_word = 1; int idx_remote_as = 4; - return peer_conf_interface_get(vty, argv[idx_word]->arg, AFI_IP, - SAFI_UNICAST, 0, NULL, - argv[idx_remote_as]->arg); + char base_xpath[XPATH_MAXLEN]; + const char *as_type_str = "as-specified"; + + snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_NEIGHBOR_UNNUM_XPATH, + argv[idx_word]->arg, ""); + + nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); + + if (argv[idx_remote_as]->arg[0] == 'i') { + as_type_str = "internal"; + } else if (argv[idx_remote_as]->arg[0] == 'e') { + as_type_str = "external"; + } else { + nb_cli_enqueue_change(vty, "./neighbor-remote-as/remote-as", + NB_OP_MODIFY, argv[idx_remote_as]->arg); + } + nb_cli_enqueue_change(vty, "./neighbor-remote-as/remote-as-type", + NB_OP_MODIFY, as_type_str); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (neighbor_interface_v6only_config_remote_as, - neighbor_interface_v6only_config_remote_as_cmd, - "neighbor WORD interface v6only remote-as <(1-4294967295)|internal|external>", - NEIGHBOR_STR - "Interface name or neighbor tag\n" - "Enable BGP with v6 link-local only\n" - "Enable BGP on interface\n" - "Specify a BGP neighbor\n" - AS_STR - "Internal BGP peer\n" - "External BGP peer\n") +DEFUN_YANG( + neighbor_interface_v6only_config_remote_as, + neighbor_interface_v6only_config_remote_as_cmd, + "neighbor WORD interface v6only remote-as <(1-4294967295)|internal|external>", + NEIGHBOR_STR + "Interface name or neighbor tag\n" + "Enable BGP with v6 link-local only\n" + "Enable BGP on interface\n" + "Specify a BGP neighbor\n" AS_STR + "Internal BGP peer\n" + "External BGP peer\n") { int idx_word = 1; int idx_remote_as = 5; - return peer_conf_interface_get(vty, argv[idx_word]->arg, AFI_IP, - SAFI_UNICAST, 1, NULL, - argv[idx_remote_as]->arg); + char base_xpath[XPATH_MAXLEN]; + const char *as_type_str = "as-specified"; + + snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_NEIGHBOR_UNNUM_XPATH, + argv[idx_word]->arg, ""); + + nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); + + nb_cli_enqueue_change(vty, "./v6only", NB_OP_MODIFY, "true"); + + if (argv[idx_remote_as]->arg[0] == 'i') { + as_type_str = "internal"; + } else if (argv[idx_remote_as]->arg[0] == 'e') { + as_type_str = "external"; + } else { + nb_cli_enqueue_change(vty, "./neighbor-remote-as/remote-as", + NB_OP_MODIFY, argv[idx_remote_as]->arg); + } + nb_cli_enqueue_change(vty, "./neighbor-remote-as/remote-as-type", + NB_OP_MODIFY, as_type_str); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (neighbor_peer_group, - neighbor_peer_group_cmd, - "neighbor WORD peer-group", - NEIGHBOR_STR - "Interface name or neighbor tag\n" - "Configure peer-group\n") +DEFUN_YANG(neighbor_peer_group, neighbor_peer_group_cmd, + "neighbor WORD peer-group", + NEIGHBOR_STR + "Interface name or neighbor tag\n" + "Configure peer-group\n") { - VTY_DECLVAR_CONTEXT(bgp, bgp); + char base_xpath[XPATH_MAXLEN]; int idx_word = 1; - struct peer *peer; - struct peer_group *group; - peer = peer_lookup_by_conf_if(bgp, argv[idx_word]->arg); - if (peer) { - vty_out(vty, "%% Name conflict with interface: \n"); - return CMD_WARNING_CONFIG_FAILED; - } + snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_PEER_GROUP_XPATH, + argv[idx_word]->arg, ""); - group = peer_group_get(bgp, argv[idx_word]->arg); - if (!group) { - vty_out(vty, "%% BGP failed to find or create peer-group\n"); - return CMD_WARNING_CONFIG_FAILED; - } + nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); - return CMD_SUCCESS; + return nb_cli_apply_changes(vty, base_xpath); } DEFUN (no_neighbor, @@ -4433,245 +4482,227 @@ DEFUN (no_neighbor, "Internal BGP peer\n" "External BGP peer\n") { - VTY_DECLVAR_CONTEXT(bgp, bgp); int idx_peer = 2; - int ret; + char base_xpath[XPATH_MAXLEN]; + char num_xpath[XPATH_MAXLEN]; + char unnbr_xpath[XPATH_MAXLEN]; + char prgrp_xpath[XPATH_MAXLEN]; union sockunion su; - struct peer_group *group; - struct peer *peer; - struct peer *other; - ret = str2sockunion(argv[idx_peer]->arg, &su); - if (ret < 0) { - /* look up for neighbor by interface name config. */ - peer = peer_lookup_by_conf_if(bgp, argv[idx_peer]->arg); - if (peer) { - /* Request zebra to terminate IPv6 RAs on this - * interface. */ - if (peer->ifp) - bgp_zebra_terminate_radv(peer->bgp, peer); - peer_notify_unconfig(peer); - peer_delete(peer); - return CMD_SUCCESS; + if (str2sockunion(argv[idx_peer]->arg, &su) == 0) { + snprintf(num_xpath, sizeof(num_xpath), + FRR_BGP_NEIGHBOR_NUM_XPATH, argv[idx_peer]->arg, ""); + if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s", + VTY_CURR_XPATH, num_xpath + 1)) { + strlcpy(base_xpath, num_xpath, sizeof(base_xpath)); } + } else { + snprintf(unnbr_xpath, sizeof(unnbr_xpath), + FRR_BGP_NEIGHBOR_UNNUM_XPATH, argv[idx_peer]->arg, ""); - group = peer_group_lookup(bgp, argv[idx_peer]->arg); - if (group) { - peer_group_notify_unconfig(group); - peer_group_delete(group); + snprintf(prgrp_xpath, sizeof(prgrp_xpath), + FRR_BGP_PEER_GROUP_XPATH, argv[idx_peer]->arg, ""); + + if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s", + VTY_CURR_XPATH, unnbr_xpath + 1)) { + strlcpy(base_xpath, unnbr_xpath, sizeof(base_xpath)); + } else if (yang_dnode_exists(vty->candidate_config->dnode, + "%s%s", VTY_CURR_XPATH, + prgrp_xpath + 1)) { + strlcpy(base_xpath, prgrp_xpath, sizeof(base_xpath)); } else { - vty_out(vty, "%% Create the peer-group first\n"); + vty_out(vty, + "%% Create the peer-group or interface first\n"); return CMD_WARNING_CONFIG_FAILED; } - } else { - peer = peer_lookup(bgp, &su); - if (peer) { - if (peer_dynamic_neighbor(peer)) { - vty_out(vty, - "%% Operation not allowed on a dynamic neighbor\n"); - return CMD_WARNING_CONFIG_FAILED; - } - - other = peer->doppelganger; - - if (CHECK_FLAG(peer->flags, PEER_FLAG_CAPABILITY_ENHE)) - bgp_zebra_terminate_radv(peer->bgp, peer); - - peer_notify_unconfig(peer); - peer_delete(peer); - if (other && other->status != Deleted) { - peer_notify_unconfig(other); - peer_delete(other); - } - } } - return CMD_SUCCESS; + nb_cli_enqueue_change(vty, base_xpath, NB_OP_DESTROY, NULL); + + return nb_cli_apply_changes(vty, NULL); } -DEFUN (no_neighbor_interface_config, - no_neighbor_interface_config_cmd, - "no neighbor WORD interface [v6only] [peer-group PGNAME] [remote-as <(1-4294967295)|internal|external>]", - NO_STR - NEIGHBOR_STR - "Interface name\n" - "Configure BGP on interface\n" - "Enable BGP with v6 link-local only\n" - "Member of the peer-group\n" - "Peer-group name\n" - "Specify a BGP neighbor\n" - AS_STR - "Internal BGP peer\n" - "External BGP peer\n") +DEFUN_YANG(no_neighbor_interface_config, + no_neighbor_interface_config_cmd, + "no neighbor WORD interface [v6only] [peer-group PGNAME] [remote-as <(1-4294967295)|internal|external>]", + NO_STR NEIGHBOR_STR + "Interface name\n" + "Configure BGP on interface\n" + "Enable BGP with v6 link-local only\n" + "Member of the peer-group\n" + "Peer-group name\n" + "Specify a BGP neighbor\n" AS_STR + "Internal BGP peer\n" + "External BGP peer\n") { - VTY_DECLVAR_CONTEXT(bgp, bgp); int idx_word = 2; - struct peer *peer; + char base_xpath[XPATH_MAXLEN]; - /* look up for neighbor by interface name config. */ - peer = peer_lookup_by_conf_if(bgp, argv[idx_word]->arg); - if (peer) { - /* Request zebra to terminate IPv6 RAs on this interface. */ - if (peer->ifp) - bgp_zebra_terminate_radv(peer->bgp, peer); - peer_notify_unconfig(peer); - peer_delete(peer); - } else { - vty_out(vty, "%% Create the bgp interface first\n"); - return CMD_WARNING_CONFIG_FAILED; - } - return CMD_SUCCESS; + snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_NEIGHBOR_UNNUM_XPATH, + argv[idx_word]->arg, ""); + + nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_peer_group, - no_neighbor_peer_group_cmd, - "no neighbor WORD peer-group", - NO_STR - NEIGHBOR_STR - "Neighbor tag\n" - "Configure peer-group\n") +DEFUN_YANG(no_neighbor_peer_group, + no_neighbor_peer_group_cmd, + "no neighbor WORD peer-group", + NO_STR NEIGHBOR_STR + "Neighbor tag\n" + "Configure peer-group\n") { - VTY_DECLVAR_CONTEXT(bgp, bgp); + char base_xpath[XPATH_MAXLEN]; int idx_word = 2; - struct peer_group *group; - group = peer_group_lookup(bgp, argv[idx_word]->arg); - if (group) { - peer_group_notify_unconfig(group); - peer_group_delete(group); - } else { - vty_out(vty, "%% Create the peer-group first\n"); - return CMD_WARNING_CONFIG_FAILED; - } - return CMD_SUCCESS; + snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_PEER_GROUP_XPATH, + argv[idx_word]->arg, ""); + + nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_interface_peer_group_remote_as, - no_neighbor_interface_peer_group_remote_as_cmd, - "no neighbor WORD remote-as <(1-4294967295)|internal|external>", - NO_STR - NEIGHBOR_STR - "Interface name or neighbor tag\n" - "Specify a BGP neighbor\n" - AS_STR - "Internal BGP peer\n" - "External BGP peer\n") +DEFUN_YANG(no_neighbor_interface_peer_group_remote_as, + no_neighbor_interface_peer_group_remote_as_cmd, + "no neighbor WORD remote-as <(1-4294967295)|internal|external>", + NO_STR NEIGHBOR_STR + "Interface name or neighbor tag\n" + "Specify a BGP neighbor\n" AS_STR + "Internal BGP peer\n" + "External BGP peer\n") { - VTY_DECLVAR_CONTEXT(bgp, bgp); - int idx_word = 2; - struct peer_group *group; - struct peer *peer; + int idx_peer = 2; + char base_xpath[XPATH_MAXLEN]; + char unnbr_xpath[XPATH_MAXLEN]; + char prgrp_xpath[XPATH_MAXLEN]; - /* look up for neighbor by interface name config. */ - peer = peer_lookup_by_conf_if(bgp, argv[idx_word]->arg); - if (peer) { - peer_as_change(peer, 0, AS_UNSPECIFIED); - return CMD_SUCCESS; - } + snprintf(unnbr_xpath, sizeof(unnbr_xpath), FRR_BGP_NEIGHBOR_UNNUM_XPATH, + argv[idx_peer]->arg, ""); - group = peer_group_lookup(bgp, argv[idx_word]->arg); - if (group) - peer_group_remote_as_delete(group); - else { + snprintf(prgrp_xpath, sizeof(prgrp_xpath), FRR_BGP_PEER_GROUP_XPATH, + argv[idx_peer]->arg, ""); + + if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s", + VTY_CURR_XPATH, unnbr_xpath + 1)) { + strlcpy(base_xpath, unnbr_xpath, sizeof(base_xpath)); + } else if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s", + VTY_CURR_XPATH, prgrp_xpath + 1)) { + strlcpy(base_xpath, prgrp_xpath, sizeof(base_xpath)); + } else { vty_out(vty, "%% Create the peer-group or interface first\n"); return CMD_WARNING_CONFIG_FAILED; } - return CMD_SUCCESS; + + strlcat(base_xpath, "/neighbor-remote-as/remote-as-type", + sizeof(base_xpath)); + + nb_cli_enqueue_change(vty, base_xpath, NB_OP_DESTROY, NULL); + + return nb_cli_apply_changes(vty, NULL); } -DEFUN (neighbor_local_as, - neighbor_local_as_cmd, - "neighbor local-as (1-4294967295)", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Specify a local-as number\n" - "AS number used as local AS\n") +DEFUN_YANG(neighbor_local_as, + neighbor_local_as_cmd, + "neighbor local-as (1-4294967295)", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Specify a local-as number\n" + "AS number used as local AS\n") { int idx_peer = 1; int idx_number = 3; - struct peer *peer; - int ret; - as_t as; + char base_xpath[XPATH_MAXLEN]; - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; - as = strtoul(argv[idx_number]->arg, NULL, 10); - ret = peer_local_as_set(peer, as, 0, 0); - return bgp_vty_return(vty, ret); + nb_cli_enqueue_change(vty, "./local-as/local-as", NB_OP_MODIFY, + argv[idx_number]->arg); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (neighbor_local_as_no_prepend, - neighbor_local_as_no_prepend_cmd, - "neighbor local-as (1-4294967295) no-prepend", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Specify a local-as number\n" - "AS number used as local AS\n" - "Do not prepend local-as to updates from ebgp peers\n") +DEFUN_YANG( + neighbor_local_as_no_prepend, neighbor_local_as_no_prepend_cmd, + "neighbor local-as (1-4294967295) no-prepend", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Specify a local-as number\n" + "AS number used as local AS\n" + "Do not prepend local-as to updates from ebgp peers\n") { int idx_peer = 1; int idx_number = 3; - struct peer *peer; - int ret; - as_t as; + char base_xpath[XPATH_MAXLEN]; - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; - as = strtoul(argv[idx_number]->arg, NULL, 10); - ret = peer_local_as_set(peer, as, 1, 0); - return bgp_vty_return(vty, ret); + nb_cli_enqueue_change(vty, "./local-as/local-as", NB_OP_MODIFY, + argv[idx_number]->arg); + nb_cli_enqueue_change(vty, "./local-as/no-prepend", NB_OP_MODIFY, + "true"); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (neighbor_local_as_no_prepend_replace_as, - neighbor_local_as_no_prepend_replace_as_cmd, - "neighbor local-as (1-4294967295) no-prepend replace-as", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Specify a local-as number\n" - "AS number used as local AS\n" - "Do not prepend local-as to updates from ebgp peers\n" - "Do not prepend local-as to updates from ibgp peers\n") +DEFUN_YANG( + neighbor_local_as_no_prepend_replace_as, + neighbor_local_as_no_prepend_replace_as_cmd, + "neighbor local-as (1-4294967295) no-prepend replace-as", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Specify a local-as number\n" + "AS number used as local AS\n" + "Do not prepend local-as to updates from ebgp peers\n" + "Do not prepend local-as to updates from ibgp peers\n") { int idx_peer = 1; int idx_number = 3; - struct peer *peer; - int ret; - as_t as; + char base_xpath[XPATH_MAXLEN]; - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; - as = strtoul(argv[idx_number]->arg, NULL, 10); - ret = peer_local_as_set(peer, as, 1, 1); - return bgp_vty_return(vty, ret); + nb_cli_enqueue_change(vty, "./local-as/local-as", NB_OP_MODIFY, + argv[idx_number]->arg); + nb_cli_enqueue_change(vty, "./local-as/no-prepend", NB_OP_MODIFY, + "true"); + nb_cli_enqueue_change(vty, "./local-as/no-replace-as", NB_OP_MODIFY, + "true"); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_local_as, - no_neighbor_local_as_cmd, - "no neighbor local-as [(1-4294967295) [no-prepend [replace-as]]]", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Specify a local-as number\n" - "AS number used as local AS\n" - "Do not prepend local-as to updates from ebgp peers\n" - "Do not prepend local-as to updates from ibgp peers\n") +DEFUN_YANG(no_neighbor_local_as, + no_neighbor_local_as_cmd, + "no neighbor local-as [(1-4294967295) [no-prepend [replace-as]]]", + NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Specify a local-as number\n" + "AS number used as local AS\n" + "Do not prepend local-as to updates from ebgp peers\n" + "Do not prepend local-as to updates from ibgp peers\n") { int idx_peer = 2; - struct peer *peer; - int ret; + char base_xpath[XPATH_MAXLEN]; - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; - ret = peer_local_as_unset(peer); - return bgp_vty_return(vty, ret); + nb_cli_enqueue_change(vty, "./local-as/local-as", NB_OP_DESTROY, NULL); + nb_cli_enqueue_change(vty, "./local-as/no-prepend", NB_OP_MODIFY, + "false"); + nb_cli_enqueue_change(vty, "./local-as/no-replace-as", NB_OP_MODIFY, + "false"); + + return nb_cli_apply_changes(vty, base_xpath); } @@ -4714,65 +4745,79 @@ DEFUN (no_neighbor_solo, return bgp_vty_return(vty, ret); } -DEFUN (neighbor_password, - neighbor_password_cmd, - "neighbor password LINE", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Set a password\n" - "The password\n") +DEFUN_YANG(neighbor_password, + neighbor_password_cmd, + "neighbor password LINE", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Set a password\n" + "The password\n") { int idx_peer = 1; int idx_line = 3; - struct peer *peer; - int ret; + char base_xpath[XPATH_MAXLEN]; - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; - ret = peer_password_set(peer, argv[idx_line]->arg); - return bgp_vty_return(vty, ret); + nb_cli_enqueue_change(vty, "./password", NB_OP_MODIFY, + argv[idx_line]->arg); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_password, - no_neighbor_password_cmd, - "no neighbor password [LINE]", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Set a password\n" - "The password\n") +DEFUN_YANG(no_neighbor_password, + no_neighbor_password_cmd, + "no neighbor password [LINE]", + NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Set a password\n" + "The password\n") { int idx_peer = 2; - struct peer *peer; - int ret; + char base_xpath[XPATH_MAXLEN]; - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; - ret = peer_password_unset(peer); - return bgp_vty_return(vty, ret); + nb_cli_enqueue_change(vty, "./password", NB_OP_DESTROY, NULL); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (neighbor_activate, - neighbor_activate_cmd, - "neighbor activate", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Enable the Address Family for this Neighbor\n") +DEFUN_YANG(neighbor_activate, + neighbor_activate_cmd, + "neighbor activate", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Enable the Address Family for this Neighbor\n") { int idx_peer = 1; - int ret; - struct peer *peer; + char base_xpath[XPATH_MAXLEN]; + char abs_xpath[XPATH_MAXLEN]; + char nbr_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, nbr_xpath, + sizeof(nbr_xpath), af_xpath) + < 0) return CMD_WARNING_CONFIG_FAILED; - ret = peer_activate(peer, bgp_node_afi(vty), bgp_node_safi(vty)); - return bgp_vty_return(vty, ret); + snprintf(base_xpath, sizeof(base_xpath), "%s%s", VTY_CURR_XPATH, + nbr_xpath + 1); + + snprintf(abs_xpath, sizeof(abs_xpath), "%s%s/enabled", VTY_CURR_XPATH, + nbr_xpath + 1); + + nb_cli_enqueue_change(vty, abs_xpath, NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(neighbor_activate, neighbor_activate_hidden_cmd, @@ -4780,25 +4825,30 @@ ALIAS_HIDDEN(neighbor_activate, neighbor_activate_hidden_cmd, NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Enable the Address Family for this Neighbor\n") -DEFUN (no_neighbor_activate, - no_neighbor_activate_cmd, - "no neighbor activate", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Enable the Address Family for this Neighbor\n") +DEFUN_YANG(no_neighbor_activate, + no_neighbor_activate_cmd, + "no neighbor activate", + NO_STR NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Enable the Address Family for this Neighbor\n") { int idx_peer = 2; - int ret; - struct peer *peer; + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); - /* Lookup peer. */ - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) return CMD_WARNING_CONFIG_FAILED; - ret = peer_deactivate(peer, bgp_node_afi(vty), bgp_node_safi(vty)); - return bgp_vty_return(vty, ret); + nb_cli_enqueue_change(vty, "./enabled", NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(no_neighbor_activate, no_neighbor_activate_hidden_cmd, @@ -4806,63 +4856,27 @@ ALIAS_HIDDEN(no_neighbor_activate, no_neighbor_activate_hidden_cmd, NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Enable the Address Family for this Neighbor\n") -DEFUN (neighbor_set_peer_group, - neighbor_set_peer_group_cmd, - "neighbor peer-group PGNAME", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Member of the peer-group\n" - "Peer-group name\n") +DEFUN_YANG (neighbor_set_peer_group, + neighbor_set_peer_group_cmd, + "neighbor peer-group PGNAME", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Member of the peer-group\n" + "Peer-group name\n") { - VTY_DECLVAR_CONTEXT(bgp, bgp); int idx_peer = 1; int idx_word = 3; - int ret; - as_t as; - union sockunion su; - struct peer *peer; - struct peer_group *group; + char base_xpath[XPATH_MAXLEN]; - ret = str2sockunion(argv[idx_peer]->arg, &su); - if (ret < 0) { - peer = peer_lookup_by_conf_if(bgp, argv[idx_peer]->arg); - if (!peer) { - vty_out(vty, "%% Malformed address or name: %s\n", - argv[idx_peer]->arg); - return CMD_WARNING_CONFIG_FAILED; - } - } else { - if (peer_address_self_check(bgp, &su)) { - vty_out(vty, - "%% Can not configure the local system as neighbor\n"); - return CMD_WARNING_CONFIG_FAILED; - } - - /* Disallow for dynamic neighbor. */ - peer = peer_lookup(bgp, &su); - if (peer && peer_dynamic_neighbor(peer)) { - vty_out(vty, - "%% Operation not allowed on a dynamic neighbor\n"); - return CMD_WARNING_CONFIG_FAILED; - } - } - - group = peer_group_lookup(bgp, argv[idx_word]->arg); - if (!group) { - vty_out(vty, "%% Configure the peer-group first\n"); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; - } - ret = peer_group_bind(bgp, &su, peer, group, &as); + nb_cli_enqueue_change(vty, "./peer-group", NB_OP_MODIFY, + argv[idx_word]->arg); - if (ret == BGP_ERR_PEER_GROUP_PEER_TYPE_DIFFERENT) { - vty_out(vty, - "%% Peer with AS %u cannot be in this peer-group, members must be all internal or all external\n", - as); - return CMD_WARNING_CONFIG_FAILED; - } - - return bgp_vty_return(vty, ret); + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(neighbor_set_peer_group, neighbor_set_peer_group_hidden_cmd, @@ -4871,39 +4885,26 @@ ALIAS_HIDDEN(neighbor_set_peer_group, neighbor_set_peer_group_hidden_cmd, "Member of the peer-group\n" "Peer-group name\n") -DEFUN (no_neighbor_set_peer_group, - no_neighbor_set_peer_group_cmd, - "no neighbor peer-group PGNAME", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Member of the peer-group\n" - "Peer-group name\n") +DEFUN_YANG (no_neighbor_set_peer_group, + no_neighbor_set_peer_group_cmd, + "no neighbor peer-group PGNAME", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Member of the peer-group\n" + "Peer-group name\n") { - VTY_DECLVAR_CONTEXT(bgp, bgp); int idx_peer = 2; - int idx_word = 4; - int ret; - struct peer *peer; - struct peer_group *group; + char base_xpath[XPATH_MAXLEN]; - peer = peer_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; - group = peer_group_lookup(bgp, argv[idx_word]->arg); - if (!group) { - vty_out(vty, "%% Configure the peer-group first\n"); - return CMD_WARNING_CONFIG_FAILED; - } + nb_cli_enqueue_change(vty, "./peer-group", NB_OP_DESTROY, NULL); - if (CHECK_FLAG(peer->flags, PEER_FLAG_CAPABILITY_ENHE)) - bgp_zebra_terminate_radv(peer->bgp, peer); - - peer_notify_unconfig(peer); - ret = peer_delete(peer); - - return bgp_vty_return(vty, ret); + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(no_neighbor_set_peer_group, no_neighbor_set_peer_group_hidden_cmd, @@ -4955,55 +4956,105 @@ static int peer_flag_unset_vty(struct vty *vty, const char *ip_str, return peer_flag_modify_vty(vty, ip_str, flag, 0); } -/* neighbor passive. */ -DEFUN (neighbor_passive, - neighbor_passive_cmd, - "neighbor passive", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Don't send open messages to this neighbor\n") +int peer_flag_modify_nb(struct bgp *bgp, const char *ip_str, struct peer *peer, + uint32_t flag, bool set, char *errmsg, + size_t errmsg_len) { - int idx_peer = 1; - return peer_flag_set_vty(vty, argv[idx_peer]->arg, PEER_FLAG_PASSIVE); + int ret; + + /* + * If 'neighbor ', then this is for directly connected peers, + * we should not accept disable-connected-check. + */ + if (peer->conf_if && (flag == PEER_FLAG_DISABLE_CONNECTED_CHECK)) { + snprintf( + errmsg, errmsg_len, + "%s is directly connected peer, cannot accept disable-connected-check\n", + ip_str); + return -1; + } + + if (!set && flag == PEER_FLAG_SHUTDOWN) + peer_tx_shutdown_message_unset(peer); + + if (set) + ret = peer_flag_set(peer, flag); + else + ret = peer_flag_unset(peer, flag); + + return bgp_nb_errmsg_return(errmsg, errmsg_len, ret); } -DEFUN (no_neighbor_passive, - no_neighbor_passive_cmd, - "no neighbor passive", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Don't send open messages to this neighbor\n") +/* neighbor passive. */ +DEFUN_YANG(neighbor_passive, + neighbor_passive_cmd, + "neighbor passive", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Don't send open messages to this neighbor\n") +{ + int idx_peer = 1; + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./passive-mode", NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); +} + +DEFUN_YANG(no_neighbor_passive, + no_neighbor_passive_cmd, + "no neighbor passive", + NO_STR NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Don't send open messages to this neighbor\n") { int idx_peer = 2; - return peer_flag_unset_vty(vty, argv[idx_peer]->arg, PEER_FLAG_PASSIVE); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./passive-mode", NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } /* neighbor shutdown. */ -DEFUN (neighbor_shutdown_msg, - neighbor_shutdown_msg_cmd, - "neighbor shutdown message MSG...", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Administratively shut down this neighbor\n" - "Add a shutdown message (RFC 8203)\n" - "Shutdown message\n") +DEFUN_YANG(neighbor_shutdown_msg, + neighbor_shutdown_msg_cmd, + "neighbor shutdown message MSG...", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Administratively shut down this neighbor\n" + "Add a shutdown message (RFC 8203)\n" + "Shutdown message\n") { int idx_peer = 1; + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; if (argc >= 5) { - struct peer *peer = - peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); char *message; - if (!peer) - return CMD_WARNING_CONFIG_FAILED; message = argv_concat(argv, argc, 4); - peer_tx_shutdown_message_set(peer, message); - XFREE(MTYPE_TMP, message); + nb_cli_enqueue_change(vty, "./admin-shutdown/message", + NB_OP_MODIFY, message); } - return peer_flag_set_vty(vty, argv[idx_peer]->arg, PEER_FLAG_SHUTDOWN); + nb_cli_enqueue_change(vty, "./admin-shutdown/enable", NB_OP_MODIFY, + "true"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS(neighbor_shutdown_msg, neighbor_shutdown_cmd, @@ -5011,20 +5062,27 @@ ALIAS(neighbor_shutdown_msg, neighbor_shutdown_cmd, NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Administratively shut down this neighbor\n") -DEFUN (no_neighbor_shutdown_msg, - no_neighbor_shutdown_msg_cmd, - "no neighbor shutdown message MSG...", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Administratively shut down this neighbor\n" - "Remove a shutdown message (RFC 8203)\n" - "Shutdown message\n") +DEFUN_YANG(no_neighbor_shutdown_msg, + no_neighbor_shutdown_msg_cmd, + "no neighbor shutdown message MSG...", + NO_STR NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Administratively shut down this neighbor\n" + "Remove a shutdown message (RFC 8203)\n" + "Shutdown message\n") { int idx_peer = 2; + char base_xpath[XPATH_MAXLEN]; - return peer_flag_unset_vty(vty, argv[idx_peer]->arg, - PEER_FLAG_SHUTDOWN); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./admin-shutdown/enable", NB_OP_MODIFY, + "false"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS(no_neighbor_shutdown_msg, no_neighbor_shutdown_cmd, @@ -5091,31 +5149,49 @@ DEFUN(no_neighbor_shutdown_rtt, } /* neighbor capability dynamic. */ -DEFUN (neighbor_capability_dynamic, - neighbor_capability_dynamic_cmd, - "neighbor capability dynamic", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Advertise capability to the peer\n" - "Advertise dynamic capability to this neighbor\n") +DEFUN_YANG (neighbor_capability_dynamic, + neighbor_capability_dynamic_cmd, + "neighbor capability dynamic", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Advertise capability to the peer\n" + "Advertise dynamic capability to this neighbor\n") { int idx_peer = 1; - return peer_flag_set_vty(vty, argv[idx_peer]->arg, - PEER_FLAG_DYNAMIC_CAPABILITY); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./capability-options/dynamic-capability", + NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_capability_dynamic, - no_neighbor_capability_dynamic_cmd, - "no neighbor capability dynamic", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Advertise capability to the peer\n" - "Advertise dynamic capability to this neighbor\n") +DEFUN_YANG (no_neighbor_capability_dynamic, + no_neighbor_capability_dynamic_cmd, + "no neighbor capability dynamic", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Advertise capability to the peer\n" + "Advertise dynamic capability to this neighbor\n") { int idx_peer = 2; - return peer_flag_unset_vty(vty, argv[idx_peer]->arg, - PEER_FLAG_DYNAMIC_CAPABILITY); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./capability-options/dynamic-capability", + NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } /* neighbor dont-capability-negotiate */ @@ -5145,31 +5221,65 @@ DEFUN (no_neighbor_dont_capability_negotiate, } /* neighbor capability extended next hop encoding */ -DEFUN (neighbor_capability_enhe, - neighbor_capability_enhe_cmd, - "neighbor capability extended-nexthop", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Advertise capability to the peer\n" - "Advertise extended next-hop capability to the peer\n") +DEFUN_YANG (neighbor_capability_enhe, + neighbor_capability_enhe_cmd, + "neighbor capability extended-nexthop", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Advertise capability to the peer\n" + "Advertise extended next-hop capability to the peer\n") { int idx_peer = 1; - return peer_flag_set_vty(vty, argv[idx_peer]->arg, - PEER_FLAG_CAPABILITY_ENHE); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change( + vty, "./capability-options/extended-nexthop-capability", + NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_capability_enhe, - no_neighbor_capability_enhe_cmd, - "no neighbor capability extended-nexthop", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Advertise capability to the peer\n" - "Advertise extended next-hop capability to the peer\n") +DEFUN_YANG (no_neighbor_capability_enhe, + no_neighbor_capability_enhe_cmd, + "no neighbor capability extended-nexthop", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Advertise capability to the peer\n" + "Advertise extended next-hop capability to the peer\n") { int idx_peer = 2; - return peer_flag_unset_vty(vty, argv[idx_peer]->arg, - PEER_FLAG_CAPABILITY_ENHE); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change( + vty, "./capability-options/extended-nexthop-capability", + NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); +} + +int peer_af_flag_modify_nb(struct peer *peer, afi_t afi, safi_t safi, + uint32_t flag, int set, char *errmsg, + size_t errmsg_len) +{ + int ret; + + if (set) + ret = peer_af_flag_set(peer, afi, safi, flag); + else + ret = peer_af_flag_unset(peer, afi, safi, flag); + + return bgp_nb_errmsg_return(errmsg, errmsg_len, ret); } static int peer_af_flag_modify_vty(struct vty *vty, const char *peer_str, @@ -5308,16 +5418,36 @@ ALIAS_HIDDEN( "Capability to SEND the ORF to this neighbor\n") /* neighbor next-hop-self. */ -DEFUN (neighbor_nexthop_self, - neighbor_nexthop_self_cmd, - "neighbor next-hop-self", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Disable the next hop calculation for this neighbor\n") +DEFUN_YANG (neighbor_nexthop_self, + neighbor_nexthop_self_cmd, + "neighbor next-hop-self", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Disable the next hop calculation for this neighbor\n") { int idx_peer = 1; - return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), - bgp_node_safi(vty), PEER_FLAG_NEXTHOP_SELF); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/nexthop-self/next-hop-self", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(neighbor_nexthop_self, neighbor_nexthop_self_hidden_cmd, @@ -5326,18 +5456,37 @@ ALIAS_HIDDEN(neighbor_nexthop_self, neighbor_nexthop_self_hidden_cmd, "Disable the next hop calculation for this neighbor\n") /* neighbor next-hop-self. */ -DEFUN (neighbor_nexthop_self_force, - neighbor_nexthop_self_force_cmd, - "neighbor next-hop-self force", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Disable the next hop calculation for this neighbor\n" - "Set the next hop to self for reflected routes\n") +DEFUN_YANG(neighbor_nexthop_self_force, + neighbor_nexthop_self_force_cmd, + "neighbor next-hop-self force", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Disable the next hop calculation for this neighbor\n" + "Set the next hop to self for reflected routes\n") { int idx_peer = 1; - return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), - bgp_node_safi(vty), - PEER_FLAG_FORCE_NEXTHOP_SELF); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/nexthop-self/next-hop-self-force", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(neighbor_nexthop_self_force, @@ -5354,18 +5503,36 @@ ALIAS_HIDDEN(neighbor_nexthop_self_force, "Disable the next hop calculation for this neighbor\n" "Set the next hop to self for reflected routes\n") -DEFUN (no_neighbor_nexthop_self, - no_neighbor_nexthop_self_cmd, - "no neighbor next-hop-self", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Disable the next hop calculation for this neighbor\n") +DEFUN_YANG (no_neighbor_nexthop_self, + no_neighbor_nexthop_self_cmd, + "no neighbor next-hop-self", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Disable the next hop calculation for this neighbor\n") { int idx_peer = 2; - return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, - bgp_node_afi(vty), bgp_node_safi(vty), - PEER_FLAG_NEXTHOP_SELF); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/nexthop-self/next-hop-self", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(no_neighbor_nexthop_self, no_neighbor_nexthop_self_hidden_cmd, @@ -5373,19 +5540,38 @@ ALIAS_HIDDEN(no_neighbor_nexthop_self, no_neighbor_nexthop_self_hidden_cmd, NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Disable the next hop calculation for this neighbor\n") -DEFUN (no_neighbor_nexthop_self_force, - no_neighbor_nexthop_self_force_cmd, - "no neighbor next-hop-self force", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Disable the next hop calculation for this neighbor\n" - "Set the next hop to self for reflected routes\n") +DEFUN_YANG (no_neighbor_nexthop_self_force, + no_neighbor_nexthop_self_force_cmd, + "no neighbor next-hop-self force", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Disable the next hop calculation for this neighbor\n" + "Set the next hop to self for reflected routes\n") { int idx_peer = 2; - return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, - bgp_node_afi(vty), bgp_node_safi(vty), - PEER_FLAG_FORCE_NEXTHOP_SELF); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/nexthop-self/next-hop-self-force", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(no_neighbor_nexthop_self_force, @@ -5403,16 +5589,35 @@ ALIAS_HIDDEN(no_neighbor_nexthop_self_force, "Set the next hop to self for reflected routes\n") /* neighbor as-override */ -DEFUN (neighbor_as_override, - neighbor_as_override_cmd, - "neighbor as-override", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Override ASNs in outbound updates if aspath equals remote-as\n") +DEFUN_YANG (neighbor_as_override, + neighbor_as_override_cmd, + "neighbor as-override", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Override ASNs in outbound updates if aspath equals remote-as\n") { int idx_peer = 1; - return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), - bgp_node_safi(vty), PEER_FLAG_AS_OVERRIDE); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/as-path-options/replace-peer-as", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(neighbor_as_override, neighbor_as_override_hidden_cmd, @@ -5420,18 +5625,36 @@ ALIAS_HIDDEN(neighbor_as_override, neighbor_as_override_hidden_cmd, NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Override ASNs in outbound updates if aspath equals remote-as\n") -DEFUN (no_neighbor_as_override, - no_neighbor_as_override_cmd, - "no neighbor as-override", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Override ASNs in outbound updates if aspath equals remote-as\n") +DEFUN_YANG (no_neighbor_as_override, + no_neighbor_as_override_cmd, + "no neighbor as-override", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Override ASNs in outbound updates if aspath equals remote-as\n") { int idx_peer = 2; - return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, - bgp_node_afi(vty), bgp_node_safi(vty), - PEER_FLAG_AS_OVERRIDE); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/as-path-options/replace-peer-as", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(no_neighbor_as_override, no_neighbor_as_override_hidden_cmd, @@ -5440,17 +5663,35 @@ ALIAS_HIDDEN(no_neighbor_as_override, no_neighbor_as_override_hidden_cmd, "Override ASNs in outbound updates if aspath equals remote-as\n") /* neighbor remove-private-AS. */ -DEFUN (neighbor_remove_private_as, - neighbor_remove_private_as_cmd, - "neighbor remove-private-AS", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Remove private ASNs in outbound updates\n") +DEFUN_YANG (neighbor_remove_private_as, + neighbor_remove_private_as_cmd, + "neighbor remove-private-AS", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Remove private ASNs in outbound updates\n") { int idx_peer = 1; - return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), - bgp_node_safi(vty), - PEER_FLAG_REMOVE_PRIVATE_AS); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/private-as/remove-private-as", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(neighbor_remove_private_as, neighbor_remove_private_as_hidden_cmd, @@ -5458,18 +5699,37 @@ ALIAS_HIDDEN(neighbor_remove_private_as, neighbor_remove_private_as_hidden_cmd, NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Remove private ASNs in outbound updates\n") -DEFUN (neighbor_remove_private_as_all, - neighbor_remove_private_as_all_cmd, - "neighbor remove-private-AS all", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Remove private ASNs in outbound updates\n" - "Apply to all AS numbers\n") +DEFUN_YANG (neighbor_remove_private_as_all, + neighbor_remove_private_as_all_cmd, + "neighbor remove-private-AS all", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Remove private ASNs in outbound updates\n" + "Apply to all AS numbers\n") { int idx_peer = 1; - return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), - bgp_node_safi(vty), - PEER_FLAG_REMOVE_PRIVATE_AS_ALL); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/private-as/remove-private-as-all", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(neighbor_remove_private_as_all, @@ -5479,18 +5739,37 @@ ALIAS_HIDDEN(neighbor_remove_private_as_all, "Remove private ASNs in outbound updates\n" "Apply to all AS numbers") -DEFUN (neighbor_remove_private_as_replace_as, - neighbor_remove_private_as_replace_as_cmd, - "neighbor remove-private-AS replace-AS", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Remove private ASNs in outbound updates\n" - "Replace private ASNs with our ASN in outbound updates\n") +DEFUN_YANG (neighbor_remove_private_as_replace_as, + neighbor_remove_private_as_replace_as_cmd, + "neighbor remove-private-AS replace-AS", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Remove private ASNs in outbound updates\n" + "Replace private ASNs with our ASN in outbound updates\n") { int idx_peer = 1; - return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), - bgp_node_safi(vty), - PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/private-as/remove-private-as-replace", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(neighbor_remove_private_as_replace_as, @@ -5500,19 +5779,38 @@ ALIAS_HIDDEN(neighbor_remove_private_as_replace_as, "Remove private ASNs in outbound updates\n" "Replace private ASNs with our ASN in outbound updates\n") -DEFUN (neighbor_remove_private_as_all_replace_as, - neighbor_remove_private_as_all_replace_as_cmd, - "neighbor remove-private-AS all replace-AS", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Remove private ASNs in outbound updates\n" - "Apply to all AS numbers\n" - "Replace private ASNs with our ASN in outbound updates\n") +DEFUN_YANG (neighbor_remove_private_as_all_replace_as, + neighbor_remove_private_as_all_replace_as_cmd, + "neighbor remove-private-AS all replace-AS", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Remove private ASNs in outbound updates\n" + "Apply to all AS numbers\n" + "Replace private ASNs with our ASN in outbound updates\n") { int idx_peer = 1; - return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), - bgp_node_safi(vty), - PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/private-as/remove-private-as-all-replace", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN( @@ -5524,18 +5822,36 @@ ALIAS_HIDDEN( "Apply to all AS numbers\n" "Replace private ASNs with our ASN in outbound updates\n") -DEFUN (no_neighbor_remove_private_as, - no_neighbor_remove_private_as_cmd, - "no neighbor remove-private-AS", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Remove private ASNs in outbound updates\n") +DEFUN_YANG (no_neighbor_remove_private_as, + no_neighbor_remove_private_as_cmd, + "no neighbor remove-private-AS", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Remove private ASNs in outbound updates\n") { int idx_peer = 2; - return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, - bgp_node_afi(vty), bgp_node_safi(vty), - PEER_FLAG_REMOVE_PRIVATE_AS); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/private-as/remove-private-as", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(no_neighbor_remove_private_as, @@ -5544,19 +5860,38 @@ ALIAS_HIDDEN(no_neighbor_remove_private_as, NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Remove private ASNs in outbound updates\n") -DEFUN (no_neighbor_remove_private_as_all, - no_neighbor_remove_private_as_all_cmd, - "no neighbor remove-private-AS all", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Remove private ASNs in outbound updates\n" - "Apply to all AS numbers\n") +DEFUN_YANG (no_neighbor_remove_private_as_all, + no_neighbor_remove_private_as_all_cmd, + "no neighbor remove-private-AS all", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Remove private ASNs in outbound updates\n" + "Apply to all AS numbers\n") { int idx_peer = 2; - return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, - bgp_node_afi(vty), bgp_node_safi(vty), - PEER_FLAG_REMOVE_PRIVATE_AS_ALL); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/private-as/remove-private-as-all", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(no_neighbor_remove_private_as_all, @@ -5566,19 +5901,38 @@ ALIAS_HIDDEN(no_neighbor_remove_private_as_all, "Remove private ASNs in outbound updates\n" "Apply to all AS numbers\n") -DEFUN (no_neighbor_remove_private_as_replace_as, - no_neighbor_remove_private_as_replace_as_cmd, - "no neighbor remove-private-AS replace-AS", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Remove private ASNs in outbound updates\n" - "Replace private ASNs with our ASN in outbound updates\n") +DEFUN_YANG (no_neighbor_remove_private_as_replace_as, + no_neighbor_remove_private_as_replace_as_cmd, + "no neighbor remove-private-AS replace-AS", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Remove private ASNs in outbound updates\n" + "Replace private ASNs with our ASN in outbound updates\n") { int idx_peer = 2; - return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, - bgp_node_afi(vty), bgp_node_safi(vty), - PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/private-as/remove-private-as-replace", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(no_neighbor_remove_private_as_replace_as, @@ -5588,20 +5942,39 @@ ALIAS_HIDDEN(no_neighbor_remove_private_as_replace_as, "Remove private ASNs in outbound updates\n" "Replace private ASNs with our ASN in outbound updates\n") -DEFUN (no_neighbor_remove_private_as_all_replace_as, - no_neighbor_remove_private_as_all_replace_as_cmd, - "no neighbor remove-private-AS all replace-AS", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Remove private ASNs in outbound updates\n" - "Apply to all AS numbers\n" - "Replace private ASNs with our ASN in outbound updates\n") +DEFUN_YANG (no_neighbor_remove_private_as_all_replace_as, + no_neighbor_remove_private_as_all_replace_as_cmd, + "no neighbor remove-private-AS all replace-AS", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Remove private ASNs in outbound updates\n" + "Apply to all AS numbers\n" + "Replace private ASNs with our ASN in outbound updates\n") { int idx_peer = 2; - return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, - bgp_node_afi(vty), bgp_node_safi(vty), - PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/private-as/remove-private-as-all-replace", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN( @@ -5615,12 +5988,12 @@ ALIAS_HIDDEN( /* neighbor send-community. */ -DEFUN (neighbor_send_community, - neighbor_send_community_cmd, - "neighbor send-community", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Send Community attribute to this neighbor\n") +DEFUN_YANG (neighbor_send_community, + neighbor_send_community_cmd, + "neighbor send-community", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Send Community attribute to this neighbor\n") { int idx_peer = 1; @@ -5634,13 +6007,13 @@ ALIAS_HIDDEN(neighbor_send_community, neighbor_send_community_hidden_cmd, NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Send Community attribute to this neighbor\n") -DEFUN (no_neighbor_send_community, - no_neighbor_send_community_cmd, - "no neighbor send-community", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Send Community attribute to this neighbor\n") +DEFUN_YANG (no_neighbor_send_community, + no_neighbor_send_community_cmd, + "no neighbor send-community", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Send Community attribute to this neighbor\n") { int idx_peer = 2; @@ -5655,52 +6028,95 @@ ALIAS_HIDDEN(no_neighbor_send_community, no_neighbor_send_community_hidden_cmd, "Send Community attribute to this neighbor\n") /* neighbor send-community extended. */ -DEFUN (neighbor_send_community_type, - neighbor_send_community_type_cmd, - "neighbor send-community ", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Send Community attribute to this neighbor\n" - "Send Standard and Extended Community attributes\n" - "Send Standard, Large and Extended Community attributes\n" - "Send Extended Community attributes\n" - "Send Standard Community attributes\n" - "Send Large Community attributes\n") +DEFUN_YANG (neighbor_send_community_type, + neighbor_send_community_type_cmd, + "neighbor send-community ", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Send Community attribute to this neighbor\n" + "Send Standard and Extended Community attributes\n" + "Send Standard, Large and Extended Community attributes\n" + "Send Extended Community attributes\n" + "Send Standard Community attributes\n" + "Send Large Community attributes\n") { const char *type = argv[argc - 1]->text; char *peer_str = argv[1]->arg; - struct peer *peer; + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char std_xpath[XPATH_MAXLEN]; + char ext_xpath[XPATH_MAXLEN]; + char lrg_xpath[XPATH_MAXLEN]; afi_t afi = bgp_node_afi(vty); safi_t safi = bgp_node_safi(vty); - peer = peer_and_group_lookup_vty(vty, peer_str); - if (!peer) + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, peer_str, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) return CMD_WARNING_CONFIG_FAILED; - if (strmatch(type, "standard")) - return peer_af_flag_set_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_COMMUNITY); + if (strmatch(type, "standard")) { + snprintf(std_xpath, sizeof(std_xpath), + "./%s/send-community/send-community", + bgp_afi_safi_get_container_str(afi, safi)); - if (strmatch(type, "extended")) - return peer_af_flag_set_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_EXT_COMMUNITY); + nb_cli_enqueue_change(vty, std_xpath, NB_OP_MODIFY, "true"); + } - if (strmatch(type, "large")) - return peer_af_flag_set_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_LARGE_COMMUNITY); + if (strmatch(type, "extended")) { + snprintf(ext_xpath, sizeof(ext_xpath), + "./%s/send-community/send-ext-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, ext_xpath, NB_OP_MODIFY, "true"); + } + + if (strmatch(type, "large")) { + snprintf(lrg_xpath, sizeof(lrg_xpath), + "./%s/send-community/send-large-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, lrg_xpath, NB_OP_MODIFY, "true"); + } if (strmatch(type, "both")) { - return peer_af_flag_set_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_COMMUNITY) - | peer_af_flag_set_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_EXT_COMMUNITY); + snprintf(std_xpath, sizeof(std_xpath), + "./%s/send-community/send-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, std_xpath, NB_OP_MODIFY, "true"); + + snprintf(ext_xpath, sizeof(ext_xpath), + "./%s/send-community/send-ext-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, ext_xpath, NB_OP_MODIFY, "true"); } - return peer_af_flag_set_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_COMMUNITY) - | peer_af_flag_set_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_EXT_COMMUNITY) - | peer_af_flag_set_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_LARGE_COMMUNITY); + + if (strmatch(type, "all")) { + snprintf(std_xpath, sizeof(std_xpath), + "./%s/send-community/send-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, std_xpath, NB_OP_MODIFY, "true"); + + snprintf(ext_xpath, sizeof(ext_xpath), + "./%s/send-community/send-ext-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, ext_xpath, NB_OP_MODIFY, "true"); + + snprintf(lrg_xpath, sizeof(lrg_xpath), + "./%s/send-community/send-large-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, lrg_xpath, NB_OP_MODIFY, "true"); + } + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN( @@ -5714,55 +6130,96 @@ ALIAS_HIDDEN( "Send Standard Community attributes\n" "Send Large Community attributes\n") -DEFUN (no_neighbor_send_community_type, - no_neighbor_send_community_type_cmd, - "no neighbor send-community ", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Send Community attribute to this neighbor\n" - "Send Standard and Extended Community attributes\n" - "Send Standard, Large and Extended Community attributes\n" - "Send Extended Community attributes\n" - "Send Standard Community attributes\n" - "Send Large Community attributes\n") +DEFUN_YANG (no_neighbor_send_community_type, + no_neighbor_send_community_type_cmd, + "no neighbor send-community ", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Send Community attribute to this neighbor\n" + "Send Standard and Extended Community attributes\n" + "Send Standard, Large and Extended Community attributes\n" + "Send Extended Community attributes\n" + "Send Standard Community attributes\n" + "Send Large Community attributes\n") { const char *type = argv[argc - 1]->text; char *peer_str = argv[2]->arg; - struct peer *peer; + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char std_xpath[XPATH_MAXLEN]; + char ext_xpath[XPATH_MAXLEN]; + char lrg_xpath[XPATH_MAXLEN]; afi_t afi = bgp_node_afi(vty); safi_t safi = bgp_node_safi(vty); - peer = peer_and_group_lookup_vty(vty, peer_str); - if (!peer) + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, peer_str, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) return CMD_WARNING_CONFIG_FAILED; - if (strmatch(type, "standard")) - return peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_COMMUNITY); + if (strmatch(type, "standard")) { + snprintf(std_xpath, sizeof(std_xpath), + "./%s/send-community/send-community", + bgp_afi_safi_get_container_str(afi, safi)); - if (strmatch(type, "extended")) - return peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_EXT_COMMUNITY); - - if (strmatch(type, "large")) - return peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_LARGE_COMMUNITY); - - if (strmatch(type, "both")) { - - return peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_COMMUNITY) - | peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_EXT_COMMUNITY); + nb_cli_enqueue_change(vty, std_xpath, NB_OP_MODIFY, "false"); } - return peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_COMMUNITY) - | peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_EXT_COMMUNITY) - | peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_SEND_LARGE_COMMUNITY); + if (strmatch(type, "extended")) { + snprintf(ext_xpath, sizeof(ext_xpath), + "./%s/send-community/send-ext-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, ext_xpath, NB_OP_MODIFY, "false"); + } + + if (strmatch(type, "large")) { + snprintf(lrg_xpath, sizeof(lrg_xpath), + "./%s/send-community/send-large-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, lrg_xpath, NB_OP_MODIFY, "false"); + } + + if (strmatch(type, "both")) { + snprintf(std_xpath, sizeof(std_xpath), + "./%s/send-community/send-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, std_xpath, NB_OP_MODIFY, "false"); + + snprintf(ext_xpath, sizeof(ext_xpath), + "./%s/send-community/send-ext-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, ext_xpath, NB_OP_MODIFY, "false"); + } + + if (strmatch(type, "all")) { + snprintf(std_xpath, sizeof(std_xpath), + "./%s/send-community/send-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, std_xpath, NB_OP_MODIFY, "false"); + + snprintf(ext_xpath, sizeof(ext_xpath), + "./%s/send-community/send-ext-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, ext_xpath, NB_OP_MODIFY, "false"); + + snprintf(lrg_xpath, sizeof(lrg_xpath), + "./%s/send-community/send-large-community", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, lrg_xpath, NB_OP_MODIFY, "false"); + } + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN( @@ -5778,18 +6235,35 @@ ALIAS_HIDDEN( "Send Large Community attributes\n") /* neighbor soft-reconfig. */ -DEFUN (neighbor_soft_reconfiguration, - neighbor_soft_reconfiguration_cmd, - "neighbor soft-reconfiguration inbound", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Per neighbor soft reconfiguration\n" - "Allow inbound soft reconfiguration for this neighbor\n") +DEFUN_YANG (neighbor_soft_reconfiguration, + neighbor_soft_reconfiguration_cmd, + "neighbor soft-reconfiguration inbound", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Per neighbor soft reconfiguration\n" + "Allow inbound soft reconfiguration for this neighbor\n") { int idx_peer = 1; - return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), - bgp_node_safi(vty), - PEER_FLAG_SOFT_RECONFIG); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char soft_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(soft_xpath, sizeof(soft_xpath), "./%s/soft-reconfiguration", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, soft_xpath, NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(neighbor_soft_reconfiguration, @@ -5799,19 +6273,34 @@ ALIAS_HIDDEN(neighbor_soft_reconfiguration, "Per neighbor soft reconfiguration\n" "Allow inbound soft reconfiguration for this neighbor\n") -DEFUN (no_neighbor_soft_reconfiguration, - no_neighbor_soft_reconfiguration_cmd, - "no neighbor soft-reconfiguration inbound", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Per neighbor soft reconfiguration\n" - "Allow inbound soft reconfiguration for this neighbor\n") +DEFUN_YANG (no_neighbor_soft_reconfiguration, + no_neighbor_soft_reconfiguration_cmd, + "no neighbor soft-reconfiguration inbound", + NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Per neighbor soft reconfiguration\n" + "Allow inbound soft reconfiguration for this neighbor\n") { int idx_peer = 2; - return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, - bgp_node_afi(vty), bgp_node_safi(vty), - PEER_FLAG_SOFT_RECONFIG); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char soft_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + snprintf(soft_xpath, sizeof(soft_xpath), "./%s/soft-reconfiguration", + bgp_afi_safi_get_container_str(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, soft_xpath, NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(no_neighbor_soft_reconfiguration, @@ -5821,24 +6310,35 @@ ALIAS_HIDDEN(no_neighbor_soft_reconfiguration, "Per neighbor soft reconfiguration\n" "Allow inbound soft reconfiguration for this neighbor\n") -DEFUN (neighbor_route_reflector_client, - neighbor_route_reflector_client_cmd, - "neighbor route-reflector-client", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Configure a neighbor as Route Reflector client\n") +DEFUN_YANG (neighbor_route_reflector_client, + neighbor_route_reflector_client_cmd, + "neighbor route-reflector-client", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Configure a neighbor as Route Reflector client\n") { int idx_peer = 1; - struct peer *peer; + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) return CMD_WARNING_CONFIG_FAILED; - return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), - bgp_node_safi(vty), - PEER_FLAG_REFLECTOR_CLIENT); + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/route-reflector/route-reflector-client", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(neighbor_route_reflector_client, @@ -5847,18 +6347,36 @@ ALIAS_HIDDEN(neighbor_route_reflector_client, NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Configure a neighbor as Route Reflector client\n") -DEFUN (no_neighbor_route_reflector_client, - no_neighbor_route_reflector_client_cmd, - "no neighbor route-reflector-client", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Configure a neighbor as Route Reflector client\n") +DEFUN_YANG (no_neighbor_route_reflector_client, + no_neighbor_route_reflector_client_cmd, + "no neighbor route-reflector-client", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Configure a neighbor as Route Reflector client\n") { int idx_peer = 2; - return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, - bgp_node_afi(vty), bgp_node_safi(vty), - PEER_FLAG_REFLECTOR_CLIENT); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/route-reflector/route-reflector-client", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(no_neighbor_route_reflector_client, @@ -5868,22 +6386,35 @@ ALIAS_HIDDEN(no_neighbor_route_reflector_client, "Configure a neighbor as Route Reflector client\n") /* neighbor route-server-client. */ -DEFUN (neighbor_route_server_client, - neighbor_route_server_client_cmd, - "neighbor route-server-client", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Configure a neighbor as Route Server client\n") +DEFUN_YANG (neighbor_route_server_client, + neighbor_route_server_client_cmd, + "neighbor route-server-client", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Configure a neighbor as Route Server client\n") { int idx_peer = 1; - struct peer *peer; + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) return CMD_WARNING_CONFIG_FAILED; - return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), - bgp_node_safi(vty), - PEER_FLAG_RSERVER_CLIENT); + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/route-server/route-server-client", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(neighbor_route_server_client, @@ -5892,18 +6423,36 @@ ALIAS_HIDDEN(neighbor_route_server_client, NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Configure a neighbor as Route Server client\n") -DEFUN (no_neighbor_route_server_client, - no_neighbor_route_server_client_cmd, - "no neighbor route-server-client", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Configure a neighbor as Route Server client\n") +DEFUN_YANG (no_neighbor_route_server_client, + no_neighbor_route_server_client_cmd, + "no neighbor route-server-client", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Configure a neighbor as Route Server client\n") { int idx_peer = 2; - return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, - bgp_node_afi(vty), bgp_node_safi(vty), - PEER_FLAG_RSERVER_CLIENT); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "./%s/route-server/route-server-client", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(no_neighbor_route_server_client, @@ -5941,28 +6490,35 @@ DEFUN (no_neighbor_nexthop_local_unchanged, PEER_FLAG_NEXTHOP_LOCAL_UNCHANGED); } -DEFUN (neighbor_attr_unchanged, - neighbor_attr_unchanged_cmd, - "neighbor attribute-unchanged [{as-path|next-hop|med}]", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "BGP attribute is propagated unchanged to this neighbor\n" - "As-path attribute\n" - "Nexthop attribute\n" - "Med attribute\n") +DEFUN_YANG (neighbor_attr_unchanged, + neighbor_attr_unchanged_cmd, + "neighbor attribute-unchanged [{as-path|next-hop|med}]", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "BGP attribute is propagated unchanged to this neighbor\n" + "As-path attribute\n" + "Nexthop attribute\n" + "Med attribute\n") { int idx = 0; char *peer_str = argv[1]->arg; - struct peer *peer; bool aspath = false; bool nexthop = false; bool med = false; afi_t afi = bgp_node_afi(vty); safi_t safi = bgp_node_safi(vty); - int ret = 0; + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char as_xpath[XPATH_MAXLEN]; + char nxthop_xpath[XPATH_MAXLEN]; + char med_xpath[XPATH_MAXLEN]; - peer = peer_and_group_lookup_vty(vty, peer_str); - if (!peer) + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, peer_str, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) return CMD_WARNING_CONFIG_FAILED; if (argv_find(argv, argc, "as-path", &idx)) @@ -5976,52 +6532,45 @@ DEFUN (neighbor_attr_unchanged, if (argv_find(argv, argc, "med", &idx)) med = true; + snprintf(as_xpath, sizeof(as_xpath), + "./%s/attr-unchanged/as-path-unchanged", + bgp_afi_safi_get_container_str(afi, safi)); + snprintf(nxthop_xpath, sizeof(nxthop_xpath), + "./%s/attr-unchanged/next-hop-unchanged", + bgp_afi_safi_get_container_str(afi, safi)); + snprintf(med_xpath, sizeof(med_xpath), + "./%s/attr-unchanged/med-unchanged", + bgp_afi_safi_get_container_str(afi, safi)); + /* no flags means all of them! */ if (!aspath && !nexthop && !med) { - ret = peer_af_flag_set_vty(vty, peer_str, afi, safi, - PEER_FLAG_AS_PATH_UNCHANGED); - ret |= peer_af_flag_set_vty(vty, peer_str, afi, safi, - PEER_FLAG_NEXTHOP_UNCHANGED); - ret |= peer_af_flag_set_vty(vty, peer_str, afi, safi, - PEER_FLAG_MED_UNCHANGED); + nb_cli_enqueue_change(vty, as_xpath, NB_OP_MODIFY, "true"); + nb_cli_enqueue_change(vty, nxthop_xpath, NB_OP_MODIFY, "true"); + nb_cli_enqueue_change(vty, med_xpath, NB_OP_MODIFY, "true"); } else { - if (!aspath) { - if (peer_af_flag_check(peer, afi, safi, - PEER_FLAG_AS_PATH_UNCHANGED)) { - ret |= peer_af_flag_unset_vty( - vty, peer_str, afi, safi, - PEER_FLAG_AS_PATH_UNCHANGED); - } - } else - ret |= peer_af_flag_set_vty( - vty, peer_str, afi, safi, - PEER_FLAG_AS_PATH_UNCHANGED); + if (!aspath) + nb_cli_enqueue_change(vty, as_xpath, NB_OP_MODIFY, + "false"); + else + nb_cli_enqueue_change(vty, as_xpath, NB_OP_MODIFY, + "true"); - if (!nexthop) { - if (peer_af_flag_check(peer, afi, safi, - PEER_FLAG_NEXTHOP_UNCHANGED)) { - ret |= peer_af_flag_unset_vty( - vty, peer_str, afi, safi, - PEER_FLAG_NEXTHOP_UNCHANGED); - } - } else - ret |= peer_af_flag_set_vty( - vty, peer_str, afi, safi, - PEER_FLAG_NEXTHOP_UNCHANGED); + if (!nexthop) + nb_cli_enqueue_change(vty, nxthop_xpath, NB_OP_MODIFY, + "false"); + else + nb_cli_enqueue_change(vty, nxthop_xpath, NB_OP_MODIFY, + "true"); - if (!med) { - if (peer_af_flag_check(peer, afi, safi, - PEER_FLAG_MED_UNCHANGED)) { - ret |= peer_af_flag_unset_vty( - vty, peer_str, afi, safi, - PEER_FLAG_MED_UNCHANGED); - } - } else - ret |= peer_af_flag_set_vty(vty, peer_str, afi, safi, - PEER_FLAG_MED_UNCHANGED); + if (!med) + nb_cli_enqueue_change(vty, med_xpath, NB_OP_MODIFY, + "false"); + else + nb_cli_enqueue_change(vty, med_xpath, NB_OP_MODIFY, + "true"); } - return ret; + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN( @@ -6033,29 +6582,36 @@ ALIAS_HIDDEN( "Nexthop attribute\n" "Med attribute\n") -DEFUN (no_neighbor_attr_unchanged, - no_neighbor_attr_unchanged_cmd, - "no neighbor attribute-unchanged [{as-path|next-hop|med}]", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "BGP attribute is propagated unchanged to this neighbor\n" - "As-path attribute\n" - "Nexthop attribute\n" - "Med attribute\n") +DEFUN_YANG (no_neighbor_attr_unchanged, + no_neighbor_attr_unchanged_cmd, + "no neighbor attribute-unchanged [{as-path|next-hop|med}]", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "BGP attribute is propagated unchanged to this neighbor\n" + "As-path attribute\n" + "Nexthop attribute\n" + "Med attribute\n") { int idx = 0; char *peer_str = argv[2]->arg; - struct peer *peer; bool aspath = false; bool nexthop = false; bool med = false; afi_t afi = bgp_node_afi(vty); safi_t safi = bgp_node_safi(vty); - int ret = 0; + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char as_xpath[XPATH_MAXLEN]; + char nxthop_xpath[XPATH_MAXLEN]; + char med_xpath[XPATH_MAXLEN]; - peer = peer_and_group_lookup_vty(vty, peer_str); - if (!peer) + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, peer_str, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) return CMD_WARNING_CONFIG_FAILED; if (argv_find(argv, argc, "as-path", &idx)) @@ -6069,27 +6625,33 @@ DEFUN (no_neighbor_attr_unchanged, if (argv_find(argv, argc, "med", &idx)) med = true; - if (!aspath && !nexthop && !med) // no flags means all of them! - return peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_AS_PATH_UNCHANGED) - | peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_NEXTHOP_UNCHANGED) - | peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_MED_UNCHANGED); + snprintf(as_xpath, sizeof(as_xpath), + "./%s/attr-unchanged/as-path-unchanged", + bgp_afi_safi_get_container_str(afi, safi)); + snprintf(nxthop_xpath, sizeof(nxthop_xpath), + "./%s/attr-unchanged/next-hop-unchanged", + bgp_afi_safi_get_container_str(afi, safi)); + snprintf(med_xpath, sizeof(med_xpath), + "./%s/attr-unchanged/med-unchanged", + bgp_afi_safi_get_container_str(afi, safi)); + + /* no flags means all of them! */ + if (!aspath && !nexthop && !med) { + nb_cli_enqueue_change(vty, as_xpath, NB_OP_MODIFY, "false"); + nb_cli_enqueue_change(vty, nxthop_xpath, NB_OP_MODIFY, "false"); + nb_cli_enqueue_change(vty, med_xpath, NB_OP_MODIFY, "false"); + } if (aspath) - ret |= peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_AS_PATH_UNCHANGED); + nb_cli_enqueue_change(vty, as_xpath, NB_OP_MODIFY, "false"); if (nexthop) - ret |= peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_NEXTHOP_UNCHANGED); + nb_cli_enqueue_change(vty, nxthop_xpath, NB_OP_MODIFY, "false"); if (med) - ret |= peer_af_flag_unset_vty(vty, peer_str, afi, safi, - PEER_FLAG_MED_UNCHANGED); + nb_cli_enqueue_change(vty, med_xpath, NB_OP_MODIFY, "false"); - return ret; + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN( @@ -6101,181 +6663,257 @@ ALIAS_HIDDEN( "Nexthop attribute\n" "Med attribute\n") -/* EBGP multihop configuration. */ -static int peer_ebgp_multihop_set_vty(struct vty *vty, const char *ip_str, - const char *ttl_str) -{ - struct peer *peer; - unsigned int ttl; - - peer = peer_and_group_lookup_vty(vty, ip_str); - if (!peer) - return CMD_WARNING_CONFIG_FAILED; - - if (peer->conf_if) - return bgp_vty_return(vty, BGP_ERR_INVALID_FOR_DIRECT_PEER); - - if (!ttl_str) - ttl = MAXTTL; - else - ttl = strtoul(ttl_str, NULL, 10); - - return bgp_vty_return(vty, peer_ebgp_multihop_set(peer, ttl)); -} - -static int peer_ebgp_multihop_unset_vty(struct vty *vty, const char *ip_str) -{ - struct peer *peer; - - peer = peer_and_group_lookup_vty(vty, ip_str); - if (!peer) - return CMD_WARNING_CONFIG_FAILED; - - return bgp_vty_return(vty, peer_ebgp_multihop_unset(peer)); -} - /* neighbor ebgp-multihop. */ -DEFUN (neighbor_ebgp_multihop, - neighbor_ebgp_multihop_cmd, - "neighbor ebgp-multihop", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Allow EBGP neighbors not on directly connected networks\n") +DEFUN_YANG (neighbor_ebgp_multihop, + neighbor_ebgp_multihop_cmd, + "neighbor ebgp-multihop", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Allow EBGP neighbors not on directly connected networks\n") { int idx_peer = 1; - return peer_ebgp_multihop_set_vty(vty, argv[idx_peer]->arg, NULL); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./ebgp-multihop/enabled", NB_OP_MODIFY, + "true"); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (neighbor_ebgp_multihop_ttl, - neighbor_ebgp_multihop_ttl_cmd, - "neighbor ebgp-multihop (1-255)", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Allow EBGP neighbors not on directly connected networks\n" - "maximum hop count\n") +DEFUN_YANG (neighbor_ebgp_multihop_ttl, + neighbor_ebgp_multihop_ttl_cmd, + "neighbor ebgp-multihop (1-255)", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Allow EBGP neighbors not on directly connected networks\n" + "maximum hop count\n") { int idx_peer = 1; int idx_number = 3; - return peer_ebgp_multihop_set_vty(vty, argv[idx_peer]->arg, - argv[idx_number]->arg); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./ebgp-multihop/multihop-ttl", NB_OP_MODIFY, + argv[idx_number]->arg); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_ebgp_multihop, - no_neighbor_ebgp_multihop_cmd, - "no neighbor ebgp-multihop [(1-255)]", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Allow EBGP neighbors not on directly connected networks\n" - "maximum hop count\n") +DEFUN_YANG (no_neighbor_ebgp_multihop, + no_neighbor_ebgp_multihop_cmd, + "no neighbor ebgp-multihop [(1-255)]", + NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Allow EBGP neighbors not on directly connected networks\n" + "maximum hop count\n") { int idx_peer = 2; - return peer_ebgp_multihop_unset_vty(vty, argv[idx_peer]->arg); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + if (argc > 4) + nb_cli_enqueue_change(vty, "./ebgp-multihop/multihop-ttl", + NB_OP_DESTROY, NULL); + else + nb_cli_enqueue_change(vty, "./ebgp-multihop/enabled", + NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } /* disable-connected-check */ -DEFUN (neighbor_disable_connected_check, - neighbor_disable_connected_check_cmd, - "neighbor ", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "one-hop away EBGP peer using loopback address\n" - "Enforce EBGP neighbors perform multihop\n") +DEFUN_YANG (neighbor_disable_connected_check, + neighbor_disable_connected_check_cmd, + "neighbor ", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "one-hop away EBGP peer using loopback address\n" + "Enforce EBGP neighbors perform multihop\n") { int idx_peer = 1; - return peer_flag_set_vty(vty, argv[idx_peer]->arg, - PEER_FLAG_DISABLE_CONNECTED_CHECK); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./ebgp-multihop/disable-connected-check", + NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_disable_connected_check, - no_neighbor_disable_connected_check_cmd, - "no neighbor ", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "one-hop away EBGP peer using loopback address\n" - "Enforce EBGP neighbors perform multihop\n") +DEFUN_YANG (no_neighbor_disable_connected_check, + no_neighbor_disable_connected_check_cmd, + "no neighbor ", + NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "one-hop away EBGP peer using loopback address\n" + "Enforce EBGP neighbors perform multihop\n") { int idx_peer = 2; - return peer_flag_unset_vty(vty, argv[idx_peer]->arg, - PEER_FLAG_DISABLE_CONNECTED_CHECK); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./ebgp-multihop/disable-connected-check", + NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } /* enforce-first-as */ -DEFUN (neighbor_enforce_first_as, - neighbor_enforce_first_as_cmd, - "neighbor enforce-first-as", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Enforce the first AS for EBGP routes\n") +DEFUN_YANG (neighbor_enforce_first_as, + neighbor_enforce_first_as_cmd, + "neighbor enforce-first-as", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Enforce the first AS for EBGP routes\n") { int idx_peer = 1; + char base_xpath[XPATH_MAXLEN]; - return peer_flag_set_vty(vty, argv[idx_peer]->arg, - PEER_FLAG_ENFORCE_FIRST_AS); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./enforce-first-as", NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_enforce_first_as, - no_neighbor_enforce_first_as_cmd, - "no neighbor enforce-first-as", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Enforce the first AS for EBGP routes\n") +DEFUN_YANG (no_neighbor_enforce_first_as, + no_neighbor_enforce_first_as_cmd, + "no neighbor enforce-first-as", + NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Enforce the first AS for EBGP routes\n") { int idx_peer = 2; + char base_xpath[XPATH_MAXLEN]; - return peer_flag_unset_vty(vty, argv[idx_peer]->arg, - PEER_FLAG_ENFORCE_FIRST_AS); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./enforce-first-as", NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } +static int peer_and_group_lookup_nb(struct vty *vty, const char *peer_str, + char *base_xpath, int xpath_len, + char *xpath) +{ + union sockunion su; + char num_xpath[XPATH_MAXLEN]; + char unnbr_xpath[XPATH_MAXLEN]; + char prgrp_xpath[XPATH_MAXLEN]; -DEFUN (neighbor_description, - neighbor_description_cmd, - "neighbor description LINE...", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Neighbor specific description\n" - "Up to 80 characters describing this neighbor\n") + if (str2sockunion(peer_str, &su) == 0) { + snprintf(num_xpath, sizeof(num_xpath), + "/neighbors/neighbor[remote-address='%s']", peer_str); + if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s", + VTY_CURR_XPATH, num_xpath)) { + snprintf(base_xpath, xpath_len, + FRR_BGP_NEIGHBOR_NUM_XPATH, peer_str, + xpath ? xpath : ""); + } else { + vty_out(vty, + "%% Specify remote-as or peer-group commands first\n"); + return -1; + } + + } else { + snprintf(unnbr_xpath, sizeof(unnbr_xpath), + "/neighbors/unnumbered-neighbor[interface='%s']", + peer_str); + + snprintf(prgrp_xpath, sizeof(prgrp_xpath), + "/peer-groups/peer-group[peer-group-name='%s']", + peer_str); + + if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s", + VTY_CURR_XPATH, unnbr_xpath)) { + snprintf(base_xpath, xpath_len, + FRR_BGP_NEIGHBOR_UNNUM_XPATH, peer_str, + xpath ? xpath : ""); + } else if (yang_dnode_exists(vty->candidate_config->dnode, + "%s%s", VTY_CURR_XPATH, + prgrp_xpath)) { + snprintf(base_xpath, xpath_len, + FRR_BGP_PEER_GROUP_XPATH, peer_str, + xpath ? xpath : ""); + } else { + vty_out(vty, + "%% Create the peer-group or interface first\n"); + return -1; + } + } + + return 0; +} + +DEFUN_YANG (neighbor_description, + neighbor_description_cmd, + "neighbor description LINE...", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Neighbor specific description\n" + "Up to 80 characters describing this neighbor\n") { int idx_peer = 1; int idx_line = 3; - struct peer *peer; + int ret; + char base_xpath[XPATH_MAXLEN]; char *str; - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; str = argv_concat(argv, argc, idx_line); - peer_description_set(peer, str); + nb_cli_enqueue_change(vty, "./description", NB_OP_MODIFY, str); + + ret = nb_cli_apply_changes(vty, base_xpath); XFREE(MTYPE_TMP, str); - return CMD_SUCCESS; + return ret; } -DEFUN (no_neighbor_description, - no_neighbor_description_cmd, - "no neighbor description", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Neighbor specific description\n") +DEFUN_YANG (no_neighbor_description, + no_neighbor_description_cmd, + "no neighbor description", + NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Neighbor specific description\n") { int idx_peer = 2; - struct peer *peer; + char base_xpath[XPATH_MAXLEN]; - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; - peer_description_unset(peer); + nb_cli_enqueue_change(vty, "./description", NB_OP_DESTROY, NULL); - return CMD_SUCCESS; + return nb_cli_apply_changes(vty, base_xpath); } ALIAS(no_neighbor_description, no_neighbor_description_comment_cmd, @@ -6284,68 +6922,73 @@ ALIAS(no_neighbor_description, no_neighbor_description_comment_cmd, "Neighbor specific description\n" "Up to 80 characters describing this neighbor\n") -/* Neighbor update-source. */ -static int peer_update_source_vty(struct vty *vty, const char *peer_str, - const char *source_str) -{ - struct peer *peer; - struct prefix p; - union sockunion su; - - peer = peer_and_group_lookup_vty(vty, peer_str); - if (!peer) - return CMD_WARNING_CONFIG_FAILED; - - if (peer->conf_if) - return CMD_WARNING; - - if (source_str) { - if (str2sockunion(source_str, &su) == 0) - peer_update_source_addr_set(peer, &su); - else { - if (str2prefix(source_str, &p)) { - vty_out(vty, - "%% Invalid update-source, remove prefix length \n"); - return CMD_WARNING_CONFIG_FAILED; - } else - peer_update_source_if_set(peer, source_str); - } - } else - peer_update_source_unset(peer); - - return CMD_SUCCESS; -} - #define BGP_UPDATE_SOURCE_HELP_STR \ "IPv4 address\n" \ "IPv6 address\n" \ "Interface name (requires zebra to be running)\n" -DEFUN (neighbor_update_source, - neighbor_update_source_cmd, - "neighbor update-source ", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Source of routing updates\n" - BGP_UPDATE_SOURCE_HELP_STR) +DEFUN_YANG (neighbor_update_source, + neighbor_update_source_cmd, + "neighbor update-source ", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Source of routing updates\n" + BGP_UPDATE_SOURCE_HELP_STR) { int idx_peer = 1; int idx_peer_2 = 3; - return peer_update_source_vty(vty, argv[idx_peer]->arg, + union sockunion su; + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + // NOTE: Check source_str prefix address + if (str2sockunion(argv[idx_peer_2]->arg, &su) == 0) + nb_cli_enqueue_change(vty, "./update-source/ip", NB_OP_MODIFY, argv[idx_peer_2]->arg); + else + nb_cli_enqueue_change(vty, "./update-source/interface", + NB_OP_MODIFY, argv[idx_peer_2]->arg); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_update_source, - no_neighbor_update_source_cmd, - "no neighbor update-source []", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Source of routing updates\n" - BGP_UPDATE_SOURCE_HELP_STR) +DEFUN_YANG (no_neighbor_update_source, + no_neighbor_update_source_cmd, + "no neighbor update-source []", + NO_STR NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Source of routing updates\n" + BGP_UPDATE_SOURCE_HELP_STR) { int idx_peer = 2; - return peer_update_source_vty(vty, argv[idx_peer]->arg, NULL); + char base_xpath[XPATH_MAXLEN]; + char abs_xpath_ip[XPATH_MAXLEN]; + char abs_xpath_intf[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(abs_xpath_ip, sizeof(abs_xpath_ip), "%s%s/update-source/ip", + VTY_CURR_XPATH, base_xpath + 1); + snprintf(abs_xpath_intf, sizeof(abs_xpath_intf), + "%s%s/update-source/interface", VTY_CURR_XPATH, + base_xpath + 1); + + if (yang_dnode_exists(vty->candidate_config->dnode, abs_xpath_ip)) { + nb_cli_enqueue_change(vty, "./update-source/ip", NB_OP_DESTROY, + NULL); + } else if (yang_dnode_exists(vty->candidate_config->dnode, + abs_xpath_intf)) { + nb_cli_enqueue_change(vty, "./update-source/interface", + NB_OP_DESTROY, NULL); + } + + return nb_cli_apply_changes(vty, base_xpath); } static int peer_default_originate_set_vty(struct vty *vty, const char *peer_str, @@ -6440,103 +7083,76 @@ ALIAS_HIDDEN( "route-map name\n") -/* Set neighbor's BGP port. */ -static int peer_port_vty(struct vty *vty, const char *ip_str, int afi, - const char *port_str) -{ - struct peer *peer; - uint16_t port; - struct servent *sp; - - peer = peer_lookup_vty(vty, ip_str); - if (!peer) - return CMD_WARNING_CONFIG_FAILED; - - if (!port_str) { - sp = getservbyname("bgp", "tcp"); - port = (sp == NULL) ? BGP_PORT_DEFAULT : ntohs(sp->s_port); - } else { - port = strtoul(port_str, NULL, 10); - } - - peer_port_set(peer, port); - - return CMD_SUCCESS; -} - /* Set specified peer's BGP port. */ -DEFUN (neighbor_port, - neighbor_port_cmd, - "neighbor port (0-65535)", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR - "Neighbor's BGP port\n" - "TCP port number\n") +DEFUN_YANG (neighbor_port, + neighbor_port_cmd, + "neighbor port (0-65535)", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR + "Neighbor's BGP port\n" + "TCP port number\n") { int idx_ip = 1; int idx_number = 3; - return peer_port_vty(vty, argv[idx_ip]->arg, AFI_IP, - argv[idx_number]->arg); + char base_xpath[XPATH_MAXLEN]; + + snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_NEIGHBOR_NUM_XPATH, + argv[idx_ip]->arg, ""); + + nb_cli_enqueue_change(vty, "./local-port", NB_OP_MODIFY, + argv[idx_number]->arg); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_port, - no_neighbor_port_cmd, - "no neighbor port [(0-65535)]", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR - "Neighbor's BGP port\n" - "TCP port number\n") +DEFUN_YANG (no_neighbor_port, + no_neighbor_port_cmd, + "no neighbor port [(0-65535)]", + NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR + "Neighbor's BGP port\n" + "TCP port number\n") { int idx_ip = 2; - return peer_port_vty(vty, argv[idx_ip]->arg, AFI_IP, NULL); + char base_xpath[XPATH_MAXLEN]; + + snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_NEIGHBOR_NUM_XPATH, + argv[idx_ip]->arg, ""); + + nb_cli_enqueue_change(vty, "./local-port", NB_OP_DESTROY, NULL); + + return nb_cli_apply_changes(vty, base_xpath); } - -/* neighbor weight. */ -static int peer_weight_set_vty(struct vty *vty, const char *ip_str, afi_t afi, - safi_t safi, const char *weight_str) -{ - int ret; - struct peer *peer; - unsigned long weight; - - peer = peer_and_group_lookup_vty(vty, ip_str); - if (!peer) - return CMD_WARNING_CONFIG_FAILED; - - weight = strtoul(weight_str, NULL, 10); - - ret = peer_weight_set(peer, afi, safi, weight); - return bgp_vty_return(vty, ret); -} - -static int peer_weight_unset_vty(struct vty *vty, const char *ip_str, afi_t afi, - safi_t safi) -{ - int ret; - struct peer *peer; - - peer = peer_and_group_lookup_vty(vty, ip_str); - if (!peer) - return CMD_WARNING_CONFIG_FAILED; - - ret = peer_weight_unset(peer, afi, safi); - return bgp_vty_return(vty, ret); -} - -DEFUN (neighbor_weight, - neighbor_weight_cmd, - "neighbor weight (0-65535)", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Set default weight for routes from this neighbor\n" - "default weight\n") +DEFUN_YANG (neighbor_weight, + neighbor_weight_cmd, + "neighbor weight (0-65535)", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Set default weight for routes from this neighbor\n" + "default weight\n") { int idx_peer = 1; int idx_number = 3; - return peer_weight_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), - bgp_node_safi(vty), argv[idx_number]->arg); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), "./%s/weight/weight-attribute", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_MODIFY, + argv[idx_number]->arg); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(neighbor_weight, neighbor_weight_hidden_cmd, @@ -6545,18 +7161,34 @@ ALIAS_HIDDEN(neighbor_weight, neighbor_weight_hidden_cmd, "Set default weight for routes from this neighbor\n" "default weight\n") -DEFUN (no_neighbor_weight, - no_neighbor_weight_cmd, - "no neighbor weight [(0-65535)]", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Set default weight for routes from this neighbor\n" - "default weight\n") +DEFUN_YANG (no_neighbor_weight, + no_neighbor_weight_cmd, + "no neighbor weight [(0-65535)]", + NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Set default weight for routes from this neighbor\n" + "default weight\n") { int idx_peer = 2; - return peer_weight_unset_vty(vty, argv[idx_peer]->arg, - bgp_node_afi(vty), bgp_node_safi(vty)); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), "./%s/weight/weight-attribute", + bgp_afi_safi_get_container_str(afi, safi)); + + nb_cli_enqueue_change(vty, attr_xpath, NB_OP_DESTROY, NULL); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(no_neighbor_weight, no_neighbor_weight_hidden_cmd, @@ -6619,181 +7251,142 @@ DEFUN (no_neighbor_strict_capability, PEER_FLAG_STRICT_CAP_MATCH); } -static int peer_timers_set_vty(struct vty *vty, const char *ip_str, - const char *keep_str, const char *hold_str) -{ - int ret; - struct peer *peer; - uint32_t keepalive; - uint32_t holdtime; - - peer = peer_and_group_lookup_vty(vty, ip_str); - if (!peer) - return CMD_WARNING_CONFIG_FAILED; - - keepalive = strtoul(keep_str, NULL, 10); - holdtime = strtoul(hold_str, NULL, 10); - - ret = peer_timers_set(peer, keepalive, holdtime); - - return bgp_vty_return(vty, ret); -} - -static int peer_timers_unset_vty(struct vty *vty, const char *ip_str) -{ - int ret; - struct peer *peer; - - peer = peer_and_group_lookup_vty(vty, ip_str); - if (!peer) - return CMD_WARNING_CONFIG_FAILED; - - ret = peer_timers_unset(peer); - - return bgp_vty_return(vty, ret); -} - -DEFUN (neighbor_timers, - neighbor_timers_cmd, - "neighbor timers (0-65535) (0-65535)", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "BGP per neighbor timers\n" - "Keepalive interval\n" - "Holdtime\n") +DEFUN_YANG (neighbor_timers, + neighbor_timers_cmd, + "neighbor timers (0-65535) (0-65535)", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "BGP per neighbor timers\n" + "Keepalive interval\n" + "Holdtime\n") { int idx_peer = 1; int idx_number = 3; int idx_number_2 = 4; - return peer_timers_set_vty(vty, argv[idx_peer]->arg, - argv[idx_number]->arg, - argv[idx_number_2]->arg); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./timers/keepalive", NB_OP_MODIFY, + argv[idx_number]->arg); + + nb_cli_enqueue_change(vty, "./timers/hold-time", NB_OP_MODIFY, + argv[idx_number_2]->arg); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_timers, - no_neighbor_timers_cmd, - "no neighbor timers [(0-65535) (0-65535)]", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "BGP per neighbor timers\n" - "Keepalive interval\n" - "Holdtime\n") +DEFUN_YANG (no_neighbor_timers, + no_neighbor_timers_cmd, + "no neighbor timers [(0-65535) (0-65535)]", + NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "BGP per neighbor timers\n" + "Keepalive interval\n" + "Holdtime\n") { int idx_peer = 2; - return peer_timers_unset_vty(vty, argv[idx_peer]->arg); -} + char base_xpath[XPATH_MAXLEN]; - -static int peer_timers_connect_set_vty(struct vty *vty, const char *ip_str, - const char *time_str) -{ - int ret; - struct peer *peer; - uint32_t connect; - - peer = peer_and_group_lookup_vty(vty, ip_str); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; - connect = strtoul(time_str, NULL, 10); + nb_cli_enqueue_change(vty, "./timers/hold-time", NB_OP_DESTROY, NULL); - ret = peer_timers_connect_set(peer, connect); + nb_cli_enqueue_change(vty, "./timers/keepalive", NB_OP_DESTROY, NULL); - return bgp_vty_return(vty, ret); + return nb_cli_apply_changes(vty, base_xpath); } -static int peer_timers_connect_unset_vty(struct vty *vty, const char *ip_str) -{ - int ret; - struct peer *peer; - - peer = peer_and_group_lookup_vty(vty, ip_str); - if (!peer) - return CMD_WARNING_CONFIG_FAILED; - - ret = peer_timers_connect_unset(peer); - - return bgp_vty_return(vty, ret); -} - -DEFUN (neighbor_timers_connect, - neighbor_timers_connect_cmd, - "neighbor timers connect (1-65535)", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "BGP per neighbor timers\n" - "BGP connect timer\n" - "Connect timer\n") +DEFUN_YANG (neighbor_timers_connect, + neighbor_timers_connect_cmd, + "neighbor timers connect (1-65535)", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "BGP per neighbor timers\n" + "BGP connect timer\n" + "Connect timer\n") { int idx_peer = 1; int idx_number = 4; - return peer_timers_connect_set_vty(vty, argv[idx_peer]->arg, - argv[idx_number]->arg); -} + char base_xpath[XPATH_MAXLEN]; -DEFUN (no_neighbor_timers_connect, - no_neighbor_timers_connect_cmd, - "no neighbor timers connect [(1-65535)]", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "BGP per neighbor timers\n" - "BGP connect timer\n" - "Connect timer\n") -{ - int idx_peer = 2; - return peer_timers_connect_unset_vty(vty, argv[idx_peer]->arg); -} - - -static int peer_advertise_interval_vty(struct vty *vty, const char *ip_str, - const char *time_str, int set) -{ - int ret; - struct peer *peer; - uint32_t routeadv = 0; - - peer = peer_and_group_lookup_vty(vty, ip_str); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; - if (time_str) - routeadv = strtoul(time_str, NULL, 10); + nb_cli_enqueue_change(vty, "./timers/connect-time", NB_OP_MODIFY, + argv[idx_number]->arg); - if (set) - ret = peer_advertise_interval_set(peer, routeadv); - else - ret = peer_advertise_interval_unset(peer); - - return bgp_vty_return(vty, ret); + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (neighbor_advertise_interval, - neighbor_advertise_interval_cmd, - "neighbor advertisement-interval (0-600)", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Minimum interval between sending BGP routing updates\n" - "time in seconds\n") +DEFUN_YANG (no_neighbor_timers_connect, + no_neighbor_timers_connect_cmd, + "no neighbor timers connect [(1-65535)]", + NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "BGP per neighbor timers\n" + "BGP connect timer\n" + "Connect timer\n") +{ + int idx_peer = 2; + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./timers/connect-time", NB_OP_DESTROY, + NULL); + + return nb_cli_apply_changes(vty, base_xpath); +} + +DEFUN_YANG (neighbor_advertise_interval, + neighbor_advertise_interval_cmd, + "neighbor advertisement-interval (0-600)", + NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Minimum interval between sending BGP routing updates\n" + "time in seconds\n") { int idx_peer = 1; int idx_number = 3; - return peer_advertise_interval_vty(vty, argv[idx_peer]->arg, - argv[idx_number]->arg, 1); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./timers/advertise-interval", NB_OP_MODIFY, + argv[idx_number]->arg); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_advertise_interval, - no_neighbor_advertise_interval_cmd, - "no neighbor advertisement-interval [(0-600)]", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Minimum interval between sending BGP routing updates\n" - "time in seconds\n") +DEFUN_YANG (no_neighbor_advertise_interval, + no_neighbor_advertise_interval_cmd, + "no neighbor advertisement-interval [(0-600)]", + NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Minimum interval between sending BGP routing updates\n" + "time in seconds\n") { int idx_peer = 2; - return peer_advertise_interval_vty(vty, argv[idx_peer]->arg, NULL, 0); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change(vty, "./timers/advertise-interval", NB_OP_DESTROY, + NULL); + + return nb_cli_apply_changes(vty, base_xpath); } @@ -6845,50 +7438,42 @@ DEFUN (no_bgp_set_route_map_delay_timer, return CMD_SUCCESS; } -/* neighbor interface */ -static int peer_interface_vty(struct vty *vty, const char *ip_str, - const char *str) -{ - struct peer *peer; - - peer = peer_lookup_vty(vty, ip_str); - if (!peer || peer->conf_if) { - vty_out(vty, "%% BGP invalid peer %s\n", ip_str); - return CMD_WARNING_CONFIG_FAILED; - } - - if (str) - peer_interface_set(peer, str); - else - peer_interface_unset(peer); - - return CMD_SUCCESS; -} - -DEFUN (neighbor_interface, - neighbor_interface_cmd, - "neighbor interface WORD", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR - "Interface\n" - "Interface name\n") +DEFUN_YANG (neighbor_interface, + neighbor_interface_cmd, + "neighbor interface WORD", + NEIGHBOR_STR NEIGHBOR_ADDR_STR + "Interface\n" + "Interface name\n") { int idx_ip = 1; int idx_word = 3; - return peer_interface_vty(vty, argv[idx_ip]->arg, argv[idx_word]->arg); + char base_xpath[XPATH_MAXLEN]; + + snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_NEIGHBOR_NUM_XPATH, + argv[idx_ip]->arg, ""); + + nb_cli_enqueue_change(vty, "./local-interface", NB_OP_MODIFY, + argv[idx_word]->arg); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_interface, - no_neighbor_interface_cmd, - "no neighbor interface WORD", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Interface\n" - "Interface name\n") +DEFUN_YANG (no_neighbor_interface, + no_neighbor_interface_cmd, + "no neighbor interface WORD", + NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 + "Interface\n" + "Interface name\n") { int idx_peer = 2; - return peer_interface_vty(vty, argv[idx_peer]->arg, NULL); + char base_xpath[XPATH_MAXLEN]; + + snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_NEIGHBOR_NUM_XPATH, + argv[idx_peer]->arg, ""); + + nb_cli_enqueue_change(vty, "./local-interface", NB_OP_DESTROY, NULL); + + return nb_cli_apply_changes(vty, base_xpath); } DEFUN (neighbor_distribute_list, @@ -7835,38 +8420,28 @@ ALIAS_HIDDEN( "Number of occurrences of AS number\n" "Only accept my AS in the as-path if the route was originated in my AS\n") -DEFUN (neighbor_ttl_security, - neighbor_ttl_security_cmd, - "neighbor ttl-security hops (1-254)", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "BGP ttl-security parameters\n" - "Specify the maximum number of hops to the BGP peer\n" - "Number of hops to BGP peer\n") +DEFUN_YANG (neighbor_ttl_security, + neighbor_ttl_security_cmd, + "neighbor ttl-security hops (1-254)", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "BGP ttl-security parameters\n" + "Specify the maximum number of hops to the BGP peer\n" + "Number of hops to BGP peer\n") { int idx_peer = 1; int idx_number = 4; - struct peer *peer; - int gtsm_hops; + char base_xpath[XPATH_MAXLEN]; - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; - gtsm_hops = strtoul(argv[idx_number]->arg, NULL, 10); + nb_cli_enqueue_change(vty, "./ttl-security", NB_OP_MODIFY, + argv[idx_number]->arg); - /* - * If 'neighbor swpX', then this is for directly connected peers, - * we should not accept a ttl-security hops value greater than 1. - */ - if (peer->conf_if && (gtsm_hops > BGP_GTSM_HOPS_CONNECTED)) { - vty_out(vty, - "%s is directly connected peer, hops cannot exceed 1\n", - argv[idx_peer]->arg); - return CMD_WARNING_CONFIG_FAILED; - } - - return bgp_vty_return(vty, peer_ttl_security_hops_set(peer, gtsm_hops)); + return nb_cli_apply_changes(vty, base_xpath); } DEFUN (no_neighbor_ttl_security, @@ -7880,13 +8455,16 @@ DEFUN (no_neighbor_ttl_security, "Number of hops to BGP peer\n") { int idx_peer = 2; - struct peer *peer; + char base_xpath[XPATH_MAXLEN]; - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) return CMD_WARNING_CONFIG_FAILED; - return bgp_vty_return(vty, peer_ttl_security_hops_unset(peer)); + nb_cli_enqueue_change(vty, "./ttl-security", NB_OP_DESTROY, NULL); + + return nb_cli_apply_changes(vty, base_xpath); } DEFUN (neighbor_addpath_tx_all_paths, diff --git a/bgpd/bgp_vty.h b/bgpd/bgp_vty.h index 349efbac45..07f61ab0ea 100644 --- a/bgpd/bgp_vty.h +++ b/bgpd/bgp_vty.h @@ -194,5 +194,20 @@ extern const char *bgp_afi_safi_get_container_str(afi_t afi, safi_t safi); extern bool vpn_policy_check_import(struct bgp *bgp, afi_t afi, safi_t safi, bool v2vimport, char *errmsg, size_t errmsg_len); +extern int bgp_nb_errmsg_return(char *errmsg, size_t errmsg_len, int ret); +extern bool peer_address_self_check(struct bgp *bgp, union sockunion *su); +extern int peer_local_interface_cfg(struct bgp *bgp, const char *ip_str, + const char *str, char *errmsg, + size_t errmsg_len); +extern int peer_conf_interface_create(struct bgp *bgp, const char *conf_if, + afi_t afi, safi_t safi, bool v6only, + const char *peer_group_name, int as_type, + as_t as, char *errmsg, size_t errmsg_len); +extern int peer_flag_modify_nb(struct bgp *bgp, const char *ip_str, + struct peer *peer, uint32_t flag, bool set, + char *errmsg, size_t errmsg_len); +extern int peer_af_flag_modify_nb(struct peer *peer, afi_t afi, safi_t safi, + uint32_t flag, int set, char *errmsg, + size_t errmsg_len); #endif /* _QUAGGA_BGP_VTY_H */ diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index cf16378de1..2346d6bb4f 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -5478,8 +5478,8 @@ int peer_allowas_in_unset(struct peer *peer, afi_t afi, safi_t safi) return 0; } -int peer_local_as_set(struct peer *peer, as_t as, int no_prepend, - int replace_as) +int peer_local_as_set(struct peer *peer, as_t as, bool no_prepend, + bool replace_as) { bool old_no_prepend, old_replace_as; struct bgp *bgp = peer->bgp; diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h index 74828e91df..bd2b4541f9 100644 --- a/bgpd/bgpd.h +++ b/bgpd/bgpd.h @@ -1949,7 +1949,8 @@ extern int peer_distribute_unset(struct peer *, afi_t, safi_t, int); extern int peer_allowas_in_set(struct peer *, afi_t, safi_t, int, int); extern int peer_allowas_in_unset(struct peer *, afi_t, safi_t); -extern int peer_local_as_set(struct peer *, as_t, int, int); +extern int peer_local_as_set(struct peer *, as_t, bool no_prepend, + bool replace_as); extern int peer_local_as_unset(struct peer *); extern int peer_prefix_list_set(struct peer *, afi_t, safi_t, int, diff --git a/yang/frr-bgp-common-structure.yang b/yang/frr-bgp-common-structure.yang index 6543b1d1c3..e17aa2783f 100644 --- a/yang/frr-bgp-common-structure.yang +++ b/yang/frr-bgp-common-structure.yang @@ -110,7 +110,6 @@ submodule frr-bgp-common-structure { container local-as { leaf local-as { type inet:as-number; - mandatory true; description "The local autonomous system number that is to be used when establishing sessions with the remote peer or peer group, if @@ -200,7 +199,6 @@ submodule frr-bgp-common-structure { container neighbor-remote-as { leaf remote-as-type { type frr-bt:as-type; - mandatory true; description "Remote AS type."; } @@ -598,7 +596,7 @@ submodule frr-bgp-common-structure { leaf send-large-community { type boolean; - default "false"; + default "true"; description "Send large community attribute to this neighbor."; } @@ -614,7 +612,6 @@ submodule frr-bgp-common-structure { "BGP Administrative Shutdown Communication."; leaf enable { type boolean; - mandatory true; description "When set to 'true', BGP shutdown communication is enabled."; } diff --git a/yang/frr-bgp-neighbor.yang b/yang/frr-bgp-neighbor.yang index 3b8d63c447..a4b50b156b 100644 --- a/yang/frr-bgp-neighbor.yang +++ b/yang/frr-bgp-neighbor.yang @@ -97,8 +97,6 @@ submodule frr-bgp-neighbor { uses neighbor-update-source; - uses neighbor-remote-as; - uses structure-neighbor-group-ebgp-multihop; uses neighbor-local-as-options; @@ -124,7 +122,6 @@ submodule frr-bgp-neighbor { leaf enabled { type boolean; - default "false"; description "This leaf indicates whether the IPv4 Unicast AFI, SAFI is enabled for the neighbour or group."; diff --git a/yang/frr-bgp-peer-group.yang b/yang/frr-bgp-peer-group.yang index 3ce628d2b7..452ff1a12f 100644 --- a/yang/frr-bgp-peer-group.yang +++ b/yang/frr-bgp-peer-group.yang @@ -9,6 +9,10 @@ submodule frr-bgp-peer-group { prefix inet; } + import frr-bgp-types { + prefix frr-bt; + } + include frr-bgp-common-structure; include frr-bgp-neighbor; @@ -72,6 +76,8 @@ submodule frr-bgp-peer-group { "Configure BGP dynamic neighbors listen range."; } + uses neighbor-remote-as; + uses neighbor-parameters; } diff --git a/yang/frr-bgp.yang b/yang/frr-bgp.yang index 820c4b2861..b555267563 100644 --- a/yang/frr-bgp.yang +++ b/yang/frr-bgp.yang @@ -19,6 +19,10 @@ module frr-bgp { prefix frr-interface; } + import frr-bgp-types { + prefix frr-bt; + } + include "frr-bgp-common-structure"; include "frr-bgp-common"; @@ -206,6 +210,25 @@ module frr-bgp { "The peer-group with which this neighbor is associated."; } + container neighbor-remote-as { + leaf remote-as-type { + type frr-bt:as-type; + mandatory true; + description + "Remote AS type."; + } + + leaf remote-as { + when "../remote-as-type = 'as-specified'"; + type inet:as-number; + description + "The remote autonomous system number received in + the BGP OPEN message."; + reference + "RFC 4271"; + } + } + uses neighbor-parameters; } @@ -238,6 +261,8 @@ module frr-bgp { "The peer-group with which this neighbor is associated."; } + uses neighbor-remote-as; + uses neighbor-parameters; } } From afe03f6094656c9f96150223c1ed5ee8e9a4ba93 Mon Sep 17 00:00:00 2001 From: Chirag Shah Date: Tue, 20 Oct 2020 22:35:48 -0700 Subject: [PATCH 3/7] *: shorten name of prefix-limit options shorten prefix-limit's option name in yang model. change restart timer to uint16. Stubbed northbound callbacks with above changes. Signed-off-by: Chirag Shah --- bgpd/bgp_nb.c | 1164 ++++++++++++---------- bgpd/bgp_nb.h | 720 +++++++------- bgpd/bgp_nb_config.c | 1464 ++++++++++++++++++---------- yang/frr-bgp-common-structure.yang | 11 +- 4 files changed, 2013 insertions(+), 1346 deletions(-) diff --git a/bgpd/bgp_nb.c b/bgpd/bgp_nb.c index b6070e030a..fad741b5bb 100644 --- a/bgpd/bgp_nb.c +++ b/bgpd/bgp_nb.c @@ -2597,52 +2597,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -2918,52 +2924,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -3124,52 +3136,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -3330,52 +3348,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -3536,52 +3560,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -3742,52 +3772,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -3927,52 +3963,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -4112,52 +4154,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -4396,52 +4444,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -4717,52 +4771,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -4923,52 +4983,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -5129,52 +5195,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -5335,52 +5407,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -5541,52 +5619,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -5726,52 +5810,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -5911,52 +6001,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -6195,52 +6291,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -6516,52 +6618,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -6722,52 +6830,64 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -6928,52 +7048,64 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -7134,52 +7266,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -7340,52 +7478,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -7525,52 +7669,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { @@ -7710,52 +7860,58 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/force-check", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_force_check_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/warning-only", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tr-restart-timer", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tw-warning-only", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy, } }, { diff --git a/bgpd/bgp_nb.h b/bgpd/bgp_nb.h index 5a9d602795..a3ed73ef47 100644 --- a/bgpd/bgp_nb.h +++ b/bgpd/bgp_nb.h @@ -1112,33 +1112,35 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -1264,33 +1266,35 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -1356,33 +1360,35 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -1448,33 +1454,35 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -1540,33 +1548,35 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -1632,33 +1642,35 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -1712,33 +1724,35 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -1792,33 +1806,35 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -1910,33 +1926,35 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -2062,33 +2080,35 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -2154,33 +2174,35 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -2246,33 +2268,35 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -2338,33 +2362,35 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -2430,33 +2456,35 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -2510,33 +2538,35 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -2590,33 +2620,35 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -2708,33 +2740,35 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -2860,33 +2894,35 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -2952,33 +2988,35 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -3044,33 +3082,35 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -3136,33 +3176,35 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -3228,33 +3270,35 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -3308,33 +3352,35 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); @@ -3388,33 +3434,35 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_max_prefixes_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_nexthop_self_next_hop_self_modify( struct nb_cb_modify_args *args); diff --git a/bgpd/bgp_nb_config.c b/bgpd/bgp_nb_config.c index 3196c5f745..39eebf7d4f 100644 --- a/bgpd/bgp_nb_config.c +++ b/bgpd/bgp_nb_config.c @@ -13980,9 +13980,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -13997,7 +13997,26 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -14014,9 +14033,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -14031,7 +14050,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -14048,9 +14067,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -14065,7 +14084,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -14082,9 +14101,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -14099,7 +14118,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -14116,9 +14135,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -14133,7 +14152,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -14150,9 +14169,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -14167,7 +14186,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -14184,9 +14203,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -14201,7 +14220,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -15457,9 +15476,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -15474,7 +15493,26 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -15491,9 +15529,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -15508,7 +15546,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -15525,9 +15563,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -15542,7 +15580,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -15559,9 +15597,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -15576,7 +15614,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -15593,9 +15631,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -15610,7 +15648,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -15627,9 +15665,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -15644,7 +15682,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -15661,9 +15699,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -15678,7 +15716,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -16343,9 +16381,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -16360,7 +16398,26 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -16377,9 +16434,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -16394,7 +16451,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -16411,9 +16468,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -16428,7 +16485,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -16445,9 +16502,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -16462,7 +16519,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -16479,9 +16536,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -16496,7 +16553,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -16513,9 +16570,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -16530,7 +16587,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -16547,9 +16604,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -16564,7 +16621,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -17229,9 +17286,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -17246,7 +17303,26 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -17263,9 +17339,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -17280,7 +17356,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -17297,9 +17373,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -17314,7 +17390,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -17331,9 +17407,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -17348,7 +17424,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -17365,9 +17441,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -17382,7 +17458,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -17399,9 +17475,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -17416,7 +17492,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -17433,9 +17509,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -17450,7 +17526,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -18115,9 +18191,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -18132,7 +18208,26 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -18149,9 +18244,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -18166,7 +18261,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -18183,9 +18278,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -18200,7 +18295,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -18217,9 +18312,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -18234,7 +18329,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -18251,9 +18346,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -18268,7 +18363,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -18285,9 +18380,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -18302,7 +18397,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -18319,9 +18414,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -18336,7 +18431,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19001,9 +19096,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -19018,7 +19113,26 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19035,9 +19149,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -19052,7 +19166,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19069,9 +19183,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -19086,7 +19200,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19103,9 +19217,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -19120,7 +19234,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19137,9 +19251,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -19154,7 +19268,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19171,9 +19285,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -19188,7 +19302,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19205,9 +19319,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -19222,7 +19336,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19785,9 +19899,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -19802,7 +19916,26 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19819,9 +19952,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -19836,7 +19969,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19853,9 +19986,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -19870,7 +20003,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19887,9 +20020,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -19904,7 +20037,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19921,9 +20054,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -19938,7 +20071,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19955,9 +20088,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -19972,7 +20105,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -19989,9 +20122,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -20006,7 +20139,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -20569,9 +20702,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -20586,7 +20719,26 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -20603,9 +20755,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -20620,7 +20772,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -20637,9 +20789,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -20654,7 +20806,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -20671,9 +20823,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -20688,7 +20840,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -20705,9 +20857,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -20722,7 +20874,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -20739,9 +20891,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -20756,7 +20908,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -20773,9 +20925,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -20790,7 +20942,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -21781,9 +21933,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -21798,7 +21950,26 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -21815,9 +21986,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -21832,7 +22003,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -21849,9 +22020,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -21866,7 +22037,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -21883,9 +22054,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -21900,7 +22071,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -21917,9 +22088,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -21934,7 +22105,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -21951,9 +22122,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -21968,7 +22139,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -21985,9 +22156,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -22002,7 +22173,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -23259,9 +23430,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -23276,7 +23447,26 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -23293,9 +23483,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -23310,7 +23500,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -23327,9 +23517,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -23344,7 +23534,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -23361,9 +23551,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -23378,7 +23568,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -23395,9 +23585,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -23412,7 +23602,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -23429,9 +23619,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -23446,7 +23636,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -23463,9 +23653,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -23480,7 +23670,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -24145,9 +24335,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -24162,7 +24352,26 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -24179,9 +24388,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -24196,7 +24405,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -24213,9 +24422,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -24230,7 +24439,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -24247,9 +24456,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -24264,7 +24473,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -24281,9 +24490,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -24298,7 +24507,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -24315,9 +24524,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -24332,7 +24541,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -24349,9 +24558,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -24366,7 +24575,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -25031,9 +25240,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -25048,7 +25257,26 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -25065,9 +25293,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -25082,7 +25310,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -25099,9 +25327,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -25116,7 +25344,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -25133,9 +25361,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -25150,7 +25378,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -25167,9 +25395,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -25184,7 +25412,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -25201,9 +25429,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -25218,7 +25446,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -25235,9 +25463,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -25252,7 +25480,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -25917,9 +26145,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -25934,7 +26162,26 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -25951,9 +26198,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -25968,7 +26215,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -25985,9 +26232,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -26002,7 +26249,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -26019,9 +26266,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -26036,7 +26283,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -26053,9 +26300,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -26070,7 +26317,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -26087,9 +26334,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -26104,7 +26351,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -26121,9 +26368,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -26138,7 +26385,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -26803,9 +27050,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -26820,7 +27067,26 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -26837,9 +27103,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -26854,7 +27120,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -26871,9 +27137,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -26888,7 +27154,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -26905,9 +27171,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -26922,7 +27188,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -26939,9 +27205,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -26956,7 +27222,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -26973,9 +27239,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -26990,7 +27256,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -27007,9 +27273,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -27024,7 +27290,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -27587,9 +27853,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -27604,7 +27870,26 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -27621,9 +27906,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -27638,7 +27923,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -27655,9 +27940,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -27672,7 +27957,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -27689,9 +27974,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -27706,7 +27991,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -27723,9 +28008,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -27740,7 +28025,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -27757,9 +28042,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -27774,7 +28059,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -27791,9 +28076,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -27808,7 +28093,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -28371,9 +28656,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/force-check */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -28388,7 +28673,26 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -28405,9 +28709,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -28422,7 +28726,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -28439,9 +28743,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -28456,7 +28760,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -28473,9 +28777,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -28490,7 +28794,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -28507,9 +28811,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -28524,7 +28828,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -28541,9 +28845,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -28558,7 +28862,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -28575,9 +28879,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -28592,7 +28896,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -29580,9 +29884,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/force-check */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -29597,7 +29901,26 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -29614,9 +29937,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -29631,7 +29954,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -29648,9 +29971,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -29665,7 +29988,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -29682,9 +30005,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -29699,7 +30022,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -29716,9 +30039,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -29733,7 +30056,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -29750,9 +30073,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -29767,7 +30090,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -29784,9 +30107,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -29801,7 +30124,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -31055,9 +31378,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/force-check */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -31072,7 +31395,26 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -31089,9 +31431,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -31106,7 +31448,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -31123,9 +31465,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -31140,7 +31482,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -31157,9 +31499,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -31174,7 +31516,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -31191,9 +31533,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -31208,7 +31550,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -31225,9 +31567,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -31242,7 +31584,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -31259,9 +31601,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -31276,7 +31618,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -31941,9 +32283,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/force-check */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -31958,7 +32300,26 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -31975,9 +32336,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -31992,7 +32353,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -32009,9 +32370,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -32026,7 +32387,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -32043,9 +32404,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -32060,7 +32421,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -32077,9 +32438,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -32094,7 +32455,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -32111,9 +32472,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -32128,7 +32489,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -32145,9 +32506,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -32162,7 +32523,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -32827,9 +33188,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/force-check */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -32844,7 +33205,26 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -32861,9 +33241,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -32878,7 +33258,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -32895,9 +33275,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -32912,7 +33292,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -32929,9 +33309,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -32946,7 +33326,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -32963,9 +33343,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -32980,7 +33360,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -32997,9 +33377,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -33014,7 +33394,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -33031,9 +33411,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -33048,7 +33428,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -33713,9 +34093,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/force-check */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -33730,7 +34110,26 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -33747,9 +34146,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -33764,7 +34163,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -33781,9 +34180,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -33798,7 +34197,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -33815,9 +34214,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -33832,7 +34231,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -33849,9 +34248,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -33866,7 +34265,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -33883,9 +34282,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -33900,7 +34299,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -33917,9 +34316,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -33934,7 +34333,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -34599,9 +34998,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/force-check */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -34616,7 +35015,26 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -34633,9 +35051,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -34650,7 +35068,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -34667,9 +35085,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -34684,7 +35102,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -34701,9 +35119,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -34718,7 +35136,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -34735,9 +35153,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -34752,7 +35170,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -34769,9 +35187,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -34786,7 +35204,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -34803,9 +35221,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -34820,7 +35238,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -35383,9 +35801,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/force-check */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -35400,7 +35818,26 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -35417,9 +35854,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -35434,7 +35871,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -35451,9 +35888,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -35468,7 +35905,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -35485,9 +35922,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -35502,7 +35939,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -35519,9 +35956,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -35536,7 +35973,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -35553,9 +35990,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -35570,7 +36007,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -35587,9 +36024,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv4-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -35604,7 +36041,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -36167,9 +36604,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/force-check */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_force_check_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -36184,7 +36621,26 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_warning_only_destroy( +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/warning-only + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -36201,9 +36657,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -36218,7 +36674,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -36235,9 +36691,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -36252,7 +36708,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -36269,9 +36725,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tr-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -36286,7 +36742,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -36303,9 +36759,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tr-restart-timer + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tr-restart-timer */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -36320,7 +36776,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tr_restart_timer_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tr_restart_timer_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -36337,9 +36793,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-shutdown-threshold-pct + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tw-shutdown-threshold-pct */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -36354,7 +36810,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_shutdown_threshold_pct_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_shutdown_threshold_pct_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -36371,9 +36827,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/prefix-limit-options/tw-warning-only + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/l3vpn-ipv6-unicast/prefix-limit/direction-list/options/tw-warning-only */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -36388,7 +36844,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_prefix_limit_options_tw_warning_only_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_options_tw_warning_only_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { diff --git a/yang/frr-bgp-common-structure.yang b/yang/frr-bgp-common-structure.yang index e17aa2783f..9917560825 100644 --- a/yang/frr-bgp-common-structure.yang +++ b/yang/frr-bgp-common-structure.yang @@ -400,7 +400,14 @@ submodule frr-bgp-common-structure { neighbour."; } - container prefix-limit-options { + leaf force-check { + type boolean; + default false; + description + "Force check all received routes."; + } + + container options { when "../direction = 'in'"; choice options { case warning { @@ -444,7 +451,7 @@ submodule frr-bgp-common-structure { } leaf tr-restart-timer { - type uint32; + type uint16; units "minutes"; description "Time interval in seconds after which the BGP session is From 04261decb9901c931f1800f27c459f3a0483776c Mon Sep 17 00:00:00 2001 From: Chirag Shah Date: Thu, 22 Oct 2020 13:43:14 -0700 Subject: [PATCH 4/7] bgpd: convert max prefix clis to transactional Signed-off-by: Chirag Shah --- bgpd/bgp_nb.c | 22 +++ bgpd/bgp_nb.h | 6 + bgpd/bgp_nb_config.c | 361 +++++++++++++++++++++++++++++++++++++------ bgpd/bgp_vty.c | 311 +++++++++++++++++++++++++------------ 4 files changed, 555 insertions(+), 145 deletions(-) diff --git a/bgpd/bgp_nb.c b/bgpd/bgp_nb.c index fad741b5bb..44546d754a 100644 --- a/bgpd/bgp_nb.c +++ b/bgpd/bgp_nb.c @@ -2588,6 +2588,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_neighbors_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -2915,6 +2916,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_neighbors_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -3127,6 +3129,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_neighbors_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -3339,6 +3342,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_neighbors_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -3551,6 +3555,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_neighbors_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -3763,6 +3768,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_neighbors_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -3954,6 +3960,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_neighbors_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -4145,6 +4152,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_neighbors_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -4435,6 +4443,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_unnumbered_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -4762,6 +4771,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_unnumbered_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -5398,6 +5408,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_unnumbered_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -5610,6 +5621,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_unnumbered_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -5801,6 +5813,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_unnumbered_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -5992,6 +6005,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_create, .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_unnumbered_neighbor_afi_safi_prefix_limit_apply_finish, } }, { @@ -6282,6 +6296,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_create, .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_peer_group_afi_safi_prefix_limit_apply_finish, } }, { @@ -6609,6 +6624,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_create, .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_peer_group_afi_safi_prefix_limit_apply_finish, } }, { @@ -6821,6 +6837,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_create, .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_peer_group_afi_safi_prefix_limit_apply_finish, } }, { @@ -7039,6 +7056,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_create, .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_peer_group_afi_safi_prefix_limit_apply_finish, } }, { @@ -7257,6 +7275,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_create, .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_peer_group_afi_safi_prefix_limit_apply_finish, } }, { @@ -7469,6 +7488,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_create, .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_peer_group_afi_safi_prefix_limit_apply_finish, } }, { @@ -7660,6 +7680,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_create, .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_peer_group_afi_safi_prefix_limit_apply_finish, } }, { @@ -7851,6 +7872,7 @@ const struct frr_yang_module_info frr_bgp_info = { .cbs = { .create = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_create, .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_direction_list_destroy, + .apply_finish = bgp_peer_group_afi_safi_prefix_limit_apply_finish, } }, { diff --git a/bgpd/bgp_nb.h b/bgpd/bgp_nb.h index a3ed73ef47..63de94c001 100644 --- a/bgpd/bgp_nb.h +++ b/bgpd/bgp_nb.h @@ -3665,6 +3665,12 @@ void bgp_peer_groups_peer_group_admin_shutdown_apply_finish( struct nb_cb_apply_finish_args *args); void bgp_peer_groups_peer_group_local_as_apply_finish( struct nb_cb_apply_finish_args *args); +void bgp_neighbors_neighbor_afi_safi_prefix_limit_apply_finish( + struct nb_cb_apply_finish_args *args); +void bgp_unnumbered_neighbor_afi_safi_prefix_limit_apply_finish( + struct nb_cb_apply_finish_args *args); +void bgp_peer_group_afi_safi_prefix_limit_apply_finish( + struct nb_cb_apply_finish_args *args); /* xpath macros */ /* route-list */ diff --git a/bgpd/bgp_nb_config.c b/bgpd/bgp_nb_config.c index 39eebf7d4f..279afdc814 100644 --- a/bgpd/bgp_nb_config.c +++ b/bgpd/bgp_nb_config.c @@ -13925,6 +13925,46 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_opt return NB_OK; } +static int +bgp_neighbor_afi_safi_prefix_limit_list_destroy(struct nb_cb_destroy_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + int direction; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "neighbor"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + direction = yang_dnode_get_enum(args->dnode, "./direction"); + + switch (direction) { + case 1: + peer_maximum_prefix_unset(peer, afi, safi); + break; + case 2: + UNSET_FLAG(peer->af_flags[afi][safi], PEER_FLAG_MAX_PREFIX_OUT); + peer->pmax_out[afi][safi] = 0; + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list @@ -13951,14 +13991,101 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_directio case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_neighbor_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; } +static void +bgp_peer_afi_safi_maximum_prefix_set(struct nb_cb_apply_finish_args *args, + struct peer *peer, afi_t afi, safi_t safi) +{ + int direction; + uint32_t max; + uint8_t threshold = MAXIMUM_PREFIX_THRESHOLD_DEFAULT; + uint16_t restart = 0; + bool warning = false; + bool force; + + max = yang_dnode_get_uint32(args->dnode, "./max-prefixes"); + direction = yang_dnode_get_enum(args->dnode, "./direction"); + switch (direction) { + case 1: + force = yang_dnode_get_bool(args->dnode, "./force-check"); + + if (yang_dnode_exists(args->dnode, + "./options/shutdown-threshold-pct")) + threshold = yang_dnode_get_uint8( + args->dnode, + "./options/shutdown-threshold-pct"); + if (yang_dnode_exists(args->dnode, + "./options/tw-shutdown-threshold-pct")) + threshold = yang_dnode_get_uint8( + args->dnode, + "./options/tw-shutdown-threshold-pct"); + if (yang_dnode_exists(args->dnode, + "./options/tr-shutdown-threshold-pct")) + threshold = yang_dnode_get_uint8( + args->dnode, + "./options/tr-shutdown-threshold-pct"); + + if (yang_dnode_exists(args->dnode, "./options/warning-only")) + warning = yang_dnode_get_bool(args->dnode, + "./options/warning-only"); + if (yang_dnode_exists(args->dnode, "./options/tw-warning-only")) + warning = yang_dnode_get_bool( + args->dnode, "./options/tw-warning-only"); + + if (yang_dnode_exists(args->dnode, "./options/restart-timer")) + restart = yang_dnode_get_uint16( + args->dnode, "./options/restart-timer"); + if (yang_dnode_exists(args->dnode, + "./options/tr-restart-timer")) + restart = yang_dnode_get_uint16( + args->dnode, "./options/tr-restart-timer"); + + peer_maximum_prefix_set(peer, afi, safi, max, threshold, + warning, restart, force); + + break; + case 2: + SET_FLAG(peer->af_flags[afi][safi], PEER_FLAG_MAX_PREFIX_OUT); + peer->pmax_out[afi][safi] = max; + + break; + } +} + +void bgp_neighbors_neighbor_afi_safi_prefix_limit_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "neighbor"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return; + + bgp_peer_afi_safi_maximum_prefix_set(args, peer, afi, safi); +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/max-prefixes @@ -15447,9 +15574,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_limit_directio case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_neighbor_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; @@ -16352,9 +16479,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_limit_direct case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_neighbor_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; @@ -17257,9 +17384,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_limit_direct case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_neighbor_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; @@ -18162,9 +18289,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_limit_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_neighbor_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; @@ -19067,9 +19194,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_limit_ case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_neighbor_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; @@ -19870,9 +19997,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limit_di case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_neighbor_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; @@ -20673,9 +20800,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limit_di case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_neighbor_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; @@ -21878,6 +22005,46 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_or return NB_OK; } +static int bgp_unnumbered_neighbor_afi_safi_prefix_limit_list_destroy( + struct nb_cb_destroy_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + int direction; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "unnumbered-neighbor"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./interface"); + peer = bgp_unnumbered_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + direction = yang_dnode_get_enum(args->dnode, "./direction"); + + switch (direction) { + case 1: + peer_maximum_prefix_unset(peer, afi, safi); + break; + case 2: + UNSET_FLAG(peer->af_flags[afi][safi], PEER_FLAG_MAX_PREFIX_OUT); + peer->pmax_out[afi][safi] = 0; + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list @@ -21904,14 +22071,42 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_lim case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_unnumbered_neighbor_afi_safi_prefix_limit_list_destroy( + args); } return NB_OK; } +void bgp_unnumbered_neighbor_afi_safi_prefix_limit_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "unnumbered-neighbor"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./interface"); + peer = bgp_unnumbered_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return; + + bgp_peer_afi_safi_maximum_prefix_set(args, peer, afi, safi); +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/max-prefixes @@ -23401,9 +23596,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_prefix_lim case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_unnumbered_neighbor_afi_safi_prefix_limit_list_destroy( + args); } return NB_OK; @@ -24306,9 +24502,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_prefix_l case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_unnumbered_neighbor_afi_safi_prefix_limit_list_destroy( + args); } return NB_OK; @@ -25211,9 +25408,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_prefix_l case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_unnumbered_neighbor_afi_safi_prefix_limit_list_destroy( + args); } return NB_OK; @@ -26116,9 +26314,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_pr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_unnumbered_neighbor_afi_safi_prefix_limit_list_destroy( + args); } return NB_OK; @@ -27021,9 +27220,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_pr case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_unnumbered_neighbor_afi_safi_prefix_limit_list_destroy( + args); } return NB_OK; @@ -27824,9 +28024,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv4_unicast_pref case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_unnumbered_neighbor_afi_safi_prefix_limit_list_destroy( + args); } return NB_OK; @@ -28627,9 +28828,10 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_l3vpn_ipv6_unicast_pref case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_unnumbered_neighbor_afi_safi_prefix_limit_list_destroy( + args); } return NB_OK; @@ -29829,6 +30031,44 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate return NB_OK; } +static int bgp_peer_group_afi_safi_prefix_limit_list_destroy( + struct nb_cb_destroy_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + int direction; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "peer-group"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + direction = yang_dnode_get_enum(args->dnode, "./direction"); + + switch (direction) { + case 1: + peer_maximum_prefix_unset(peer, afi, safi); + break; + case 2: + UNSET_FLAG(peer->af_flags[afi][safi], PEER_FLAG_MAX_PREFIX_OUT); + peer->pmax_out[afi][safi] = 0; + break; + } + + return NB_OK; +} /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list @@ -29855,14 +30095,39 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_dire case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_peer_group_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; } +void bgp_peer_group_afi_safi_prefix_limit_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "peer-group"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return; + + bgp_peer_afi_safi_maximum_prefix_set(args, peer, afi, safi); +} /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/direction-list/max-prefixes @@ -31349,9 +31614,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_prefix_limit_dire case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_peer_group_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; @@ -32254,9 +32519,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_prefix_limit_di case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_peer_group_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; @@ -33159,9 +33424,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_prefix_limit_di case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_peer_group_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; @@ -34064,9 +34329,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_prefix_li case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_peer_group_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; @@ -34969,9 +35234,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_prefix_li case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_peer_group_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; @@ -35772,9 +36037,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv4_unicast_prefix_limi case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_peer_group_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; @@ -36575,9 +36840,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_l3vpn_ipv6_unicast_prefix_limi case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ - break; + return bgp_peer_group_afi_safi_prefix_limit_list_destroy(args); } return NB_OK; diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index c97d241f27..cc2b0464b2 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -8000,55 +8000,6 @@ ALIAS_HIDDEN(no_neighbor_unsuppress_map, no_neighbor_unsuppress_map_hidden_cmd, "Route-map to selectively unsuppress suppressed routes\n" "Name of route map\n") -static int peer_maximum_prefix_set_vty(struct vty *vty, const char *ip_str, - afi_t afi, safi_t safi, - const char *num_str, - const char *threshold_str, int warning, - const char *restart_str, - const char *force_str) -{ - int ret; - struct peer *peer; - uint32_t max; - uint8_t threshold; - uint16_t restart; - - peer = peer_and_group_lookup_vty(vty, ip_str); - if (!peer) - return CMD_WARNING_CONFIG_FAILED; - - max = strtoul(num_str, NULL, 10); - if (threshold_str) - threshold = atoi(threshold_str); - else - threshold = MAXIMUM_PREFIX_THRESHOLD_DEFAULT; - - if (restart_str) - restart = atoi(restart_str); - else - restart = 0; - - ret = peer_maximum_prefix_set(peer, afi, safi, max, threshold, warning, - restart, force_str ? true : false); - - return bgp_vty_return(vty, ret); -} - -static int peer_maximum_prefix_unset_vty(struct vty *vty, const char *ip_str, - afi_t afi, safi_t safi) -{ - int ret; - struct peer *peer; - - peer = peer_and_group_lookup_vty(vty, ip_str); - if (!peer) - return CMD_WARNING_CONFIG_FAILED; - - ret = peer_maximum_prefix_unset(peer, afi, safi); - - return bgp_vty_return(vty, ret); -} - /* Maximum number of prefix to be sent to the neighbor. */ DEFUN(neighbor_maximum_prefix_out, neighbor_maximum_prefix_out_cmd, @@ -8058,23 +8009,32 @@ DEFUN(neighbor_maximum_prefix_out, "Maximum number of prefixes to be sent to this peer\n" "Maximum no. of prefix limit\n") { + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; int idx_peer = 1; int idx_number = 3; - struct peer *peer; - uint32_t max; afi_t afi = bgp_node_afi(vty); safi_t safi = bgp_node_safi(vty); - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) return CMD_WARNING_CONFIG_FAILED; - max = strtoul(argv[idx_number]->arg, NULL, 10); + snprintf(attr_xpath, sizeof(attr_xpath), + "/%s/prefix-limit/direction-list[direction='out']", + bgp_afi_safi_get_container_str(afi, safi)); + strlcat(base_xpath, attr_xpath, sizeof(base_xpath)); - SET_FLAG(peer->af_flags[afi][safi], PEER_FLAG_MAX_PREFIX_OUT); - peer->pmax_out[afi][safi] = max; + nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); - return CMD_SUCCESS; + nb_cli_enqueue_change(vty, "./max-prefixes", NB_OP_MODIFY, + argv[idx_number]->arg); + + return nb_cli_apply_changes(vty, base_xpath); } DEFUN(no_neighbor_maximum_prefix_out, @@ -8085,19 +8045,28 @@ DEFUN(no_neighbor_maximum_prefix_out, NEIGHBOR_ADDR_STR2 "Maximum number of prefixes to be sent to this peer\n") { + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; int idx_peer = 2; - struct peer *peer; afi_t afi = bgp_node_afi(vty); safi_t safi = bgp_node_safi(vty); - peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); - if (!peer) + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) return CMD_WARNING_CONFIG_FAILED; - UNSET_FLAG(peer->af_flags[afi][safi], PEER_FLAG_MAX_PREFIX_OUT); - peer->pmax_out[afi][safi] = 0; + snprintf(attr_xpath, sizeof(attr_xpath), + "/%s/prefix-limit/direction-list[direction='out']", + bgp_afi_safi_get_container_str(afi, safi)); + strlcat(base_xpath, attr_xpath, sizeof(base_xpath)); - return CMD_SUCCESS; + nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); + + return nb_cli_apply_changes(vty, base_xpath); } /* Maximum number of prefix configuration. Prefix count is different @@ -8115,14 +8084,33 @@ DEFUN (neighbor_maximum_prefix, int idx_peer = 1; int idx_number = 3; int idx_force = 0; - char *force = NULL; + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "/%s/prefix-limit/direction-list[direction='in']", + bgp_afi_safi_get_container_str(afi, safi)); + strlcat(base_xpath, attr_xpath, sizeof(base_xpath)); + + nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); + + nb_cli_enqueue_change(vty, "./max-prefixes", NB_OP_MODIFY, + argv[idx_number]->arg); if (argv_find(argv, argc, "force", &idx_force)) - force = argv[idx_force]->arg; + nb_cli_enqueue_change(vty, "./force-check", NB_OP_MODIFY, + "true"); - return peer_maximum_prefix_set_vty( - vty, argv[idx_peer]->arg, bgp_node_afi(vty), bgp_node_safi(vty), - argv[idx_number]->arg, NULL, 0, NULL, force); + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN(neighbor_maximum_prefix, neighbor_maximum_prefix_hidden_cmd, @@ -8146,14 +8134,37 @@ DEFUN (neighbor_maximum_prefix_threshold, int idx_number = 3; int idx_number_2 = 4; int idx_force = 0; - char *force = NULL; + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "/%s/prefix-limit/direction-list[direction='in']", + bgp_afi_safi_get_container_str(afi, safi)); + strlcat(base_xpath, attr_xpath, sizeof(base_xpath)); + + nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); + + nb_cli_enqueue_change(vty, "./max-prefixes", NB_OP_MODIFY, + argv[idx_number]->arg); + + nb_cli_enqueue_change(vty, "./options/shutdown-threshold-pct", + NB_OP_MODIFY, argv[idx_number_2]->arg); if (argv_find(argv, argc, "force", &idx_force)) - force = argv[idx_force]->arg; + nb_cli_enqueue_change(vty, "./force-check", NB_OP_MODIFY, + "true"); - return peer_maximum_prefix_set_vty( - vty, argv[idx_peer]->arg, bgp_node_afi(vty), bgp_node_safi(vty), - argv[idx_number]->arg, argv[idx_number_2]->arg, 0, NULL, force); + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN( @@ -8179,14 +8190,36 @@ DEFUN (neighbor_maximum_prefix_warning, int idx_peer = 1; int idx_number = 3; int idx_force = 0; - char *force = NULL; + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "/%s/prefix-limit/direction-list[direction='in']", + bgp_afi_safi_get_container_str(afi, safi)); + strlcat(base_xpath, attr_xpath, sizeof(base_xpath)); + + nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); + + nb_cli_enqueue_change(vty, "./max-prefixes", NB_OP_MODIFY, + argv[idx_number]->arg); + + nb_cli_enqueue_change(vty, "./options/warning-only", NB_OP_MODIFY, + "true"); if (argv_find(argv, argc, "force", &idx_force)) - force = argv[idx_force]->arg; + nb_cli_enqueue_change(vty, "./force-check", NB_OP_MODIFY, + "true"); - return peer_maximum_prefix_set_vty( - vty, argv[idx_peer]->arg, bgp_node_afi(vty), bgp_node_safi(vty), - argv[idx_number]->arg, NULL, 1, NULL, force); + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN( @@ -8214,14 +8247,37 @@ DEFUN (neighbor_maximum_prefix_threshold_warning, int idx_number = 3; int idx_number_2 = 4; int idx_force = 0; - char *force = NULL; + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "/%s/prefix-limit/direction-list[direction='in']", + bgp_afi_safi_get_container_str(afi, safi)); + strlcat(base_xpath, attr_xpath, sizeof(base_xpath)); + + nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); + + nb_cli_enqueue_change(vty, "./max-prefixes", NB_OP_MODIFY, + argv[idx_number]->arg); + nb_cli_enqueue_change(vty, "./options/tw-shutdown-threshold-pct", + NB_OP_MODIFY, argv[idx_number_2]->arg); + nb_cli_enqueue_change(vty, "./options/tw-warning-only", NB_OP_MODIFY, + "true"); if (argv_find(argv, argc, "force", &idx_force)) - force = argv[idx_force]->arg; + nb_cli_enqueue_change(vty, "./force-check", NB_OP_MODIFY, + "true"); - return peer_maximum_prefix_set_vty( - vty, argv[idx_peer]->arg, bgp_node_afi(vty), bgp_node_safi(vty), - argv[idx_number]->arg, argv[idx_number_2]->arg, 1, NULL, force); + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN( @@ -8250,14 +8306,35 @@ DEFUN (neighbor_maximum_prefix_restart, int idx_number = 3; int idx_number_2 = 5; int idx_force = 0; - char *force = NULL; + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "/%s/prefix-limit/direction-list[direction='in']", + bgp_afi_safi_get_container_str(afi, safi)); + strlcat(base_xpath, attr_xpath, sizeof(base_xpath)); + + nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); + + nb_cli_enqueue_change(vty, "./max-prefixes", NB_OP_MODIFY, + argv[idx_number]->arg); + nb_cli_enqueue_change(vty, "./options/restart-timer", NB_OP_MODIFY, + argv[idx_number_2]->arg); if (argv_find(argv, argc, "force", &idx_force)) - force = argv[idx_force]->arg; + nb_cli_enqueue_change(vty, "./force-check", NB_OP_MODIFY, + "true"); - return peer_maximum_prefix_set_vty( - vty, argv[idx_peer]->arg, bgp_node_afi(vty), bgp_node_safi(vty), - argv[idx_number]->arg, NULL, 0, argv[idx_number_2]->arg, force); + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN( @@ -8288,15 +8365,37 @@ DEFUN (neighbor_maximum_prefix_threshold_restart, int idx_number_2 = 4; int idx_number_3 = 6; int idx_force = 0; - char *force = NULL; + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "/%s/prefix-limit/direction-list[direction='in']", + bgp_afi_safi_get_container_str(afi, safi)); + strlcat(base_xpath, attr_xpath, sizeof(base_xpath)); + + nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); + + nb_cli_enqueue_change(vty, "./max-prefixes", NB_OP_MODIFY, + argv[idx_number]->arg); + nb_cli_enqueue_change(vty, "./options/tr-shutdown-threshold-pct", + NB_OP_MODIFY, argv[idx_number_2]->arg); + nb_cli_enqueue_change(vty, "./options/tr-restart-timer", NB_OP_MODIFY, + argv[idx_number_3]->arg); if (argv_find(argv, argc, "force", &idx_force)) - force = argv[idx_force]->arg; + nb_cli_enqueue_change(vty, "./force-check", NB_OP_MODIFY, + "true"); - return peer_maximum_prefix_set_vty( - vty, argv[idx_peer]->arg, bgp_node_afi(vty), bgp_node_safi(vty), - argv[idx_number]->arg, argv[idx_number_2]->arg, 0, - argv[idx_number_3]->arg, force); + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN( @@ -8326,9 +8425,27 @@ DEFUN (no_neighbor_maximum_prefix, "Force checking all received routes not only accepted\n") { int idx_peer = 2; - return peer_maximum_prefix_unset_vty(vty, argv[idx_peer]->arg, - bgp_node_afi(vty), - bgp_node_safi(vty)); + char base_xpath[XPATH_MAXLEN]; + char af_xpath[XPATH_MAXLEN]; + char attr_xpath[XPATH_MAXLEN]; + afi_t afi = bgp_node_afi(vty); + safi_t safi = bgp_node_safi(vty); + + snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, + yang_afi_safi_value2identity(afi, safi)); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), af_xpath) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + snprintf(attr_xpath, sizeof(attr_xpath), + "/%s/prefix-limit/direction-list[direction='in']", + bgp_afi_safi_get_container_str(afi, safi)); + strlcat(base_xpath, attr_xpath, sizeof(base_xpath)); + + nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); + + return nb_cli_apply_changes(vty, base_xpath); } ALIAS_HIDDEN( From 8611c7f3b6f33cb5ef8687bc126354d06eadbfcf Mon Sep 17 00:00:00 2001 From: Chirag Shah Date: Fri, 23 Oct 2020 22:42:00 -0700 Subject: [PATCH 5/7] bgpd: convert neighbor peer config to transactional Signed-off-by: Chirag Shah --- bgpd/bgp_nb_config.c | 118 ++++++++++++++++++++++++++++++++++++++++--- bgpd/bgp_vty.c | 106 +++++++++++++++++++++++++------------- 2 files changed, 184 insertions(+), 40 deletions(-) diff --git a/bgpd/bgp_nb_config.c b/bgpd/bgp_nb_config.c index 279afdc814..27477bef6c 100644 --- a/bgpd/bgp_nb_config.c +++ b/bgpd/bgp_nb_config.c @@ -2837,12 +2837,29 @@ int bgp_neighbors_neighbor_capability_options_dynamic_capability_modify( int bgp_neighbors_neighbor_capability_options_strict_capability_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_STRICT_CAP_MATCH, enable, + args->errmsg, args->errmsg_len); + break; } @@ -2911,12 +2928,29 @@ int bgp_neighbors_neighbor_capability_options_capability_negotiate_modify( int bgp_neighbors_neighbor_capability_options_override_capability_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_OVERRIDE_CAPABILITY, enable, + args->errmsg, args->errmsg_len); + break; } @@ -4837,12 +4871,31 @@ int bgp_neighbors_unnumbered_neighbor_capability_options_dynamic_capability_modi int bgp_neighbors_unnumbered_neighbor_capability_options_strict_capability_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + if (!peer) + return NB_ERR_INCONSISTENCY; + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_STRICT_CAP_MATCH, enable, + args->errmsg, args->errmsg_len); + break; } @@ -4913,12 +4966,29 @@ int bgp_neighbors_unnumbered_neighbor_capability_options_capability_negotiate_mo int bgp_neighbors_unnumbered_neighbor_capability_options_override_capability_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = + yang_dnode_get_string(args->dnode, "../../interface"); + peer = bgp_unnumbered_neighbor_peer_lookup( + bgp, peer_str, args->errmsg, args->errmsg_len); + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_OVERRIDE_CAPABILITY, enable, + args->errmsg, args->errmsg_len); + break; } @@ -6696,12 +6766,30 @@ int bgp_peer_groups_peer_group_capability_options_dynamic_capability_modify( int bgp_peer_groups_peer_group_capability_options_strict_capability_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_STRICT_CAP_MATCH, enable, + args->errmsg, args->errmsg_len); + break; } @@ -6771,12 +6859,30 @@ int bgp_peer_groups_peer_group_capability_options_capability_negotiate_modify( int bgp_peer_groups_peer_group_capability_options_override_capability_modify( struct nb_cb_modify_args *args) { + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + bool enable = false; + switch (args->event) { case NB_EV_VALIDATE: case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + bgp = nb_running_get_entry(args->dnode, NULL, true); + peer_str = yang_dnode_get_string(args->dnode, + "../../peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return NB_ERR_INCONSISTENCY; + + enable = yang_dnode_get_bool(args->dnode, NULL); + + peer_flag_modify_nb(bgp, peer_str, peer, + PEER_FLAG_OVERRIDE_CAPABILITY, enable, + args->errmsg, args->errmsg_len); + break; } diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index cc2b0464b2..fb4fae833d 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -7199,56 +7199,94 @@ ALIAS_HIDDEN(no_neighbor_weight, no_neighbor_weight_hidden_cmd, /* Override capability negotiation. */ -DEFUN (neighbor_override_capability, - neighbor_override_capability_cmd, - "neighbor override-capability", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Override capability negotiation result\n") +DEFUN_YANG (neighbor_override_capability, + neighbor_override_capability_cmd, + "neighbor override-capability", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Override capability negotiation result\n") { int idx_peer = 1; - return peer_flag_set_vty(vty, argv[idx_peer]->arg, - PEER_FLAG_OVERRIDE_CAPABILITY); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change( + vty, "./capability-options/override-capability", + NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_override_capability, - no_neighbor_override_capability_cmd, - "no neighbor override-capability", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Override capability negotiation result\n") +DEFUN_YANG (no_neighbor_override_capability, + no_neighbor_override_capability_cmd, + "no neighbor override-capability", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Override capability negotiation result\n") { int idx_peer = 2; - return peer_flag_unset_vty(vty, argv[idx_peer]->arg, - PEER_FLAG_OVERRIDE_CAPABILITY); + char base_xpath[XPATH_MAXLEN]; + + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change( + vty, "./capability-options/override-capability", + NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (neighbor_strict_capability, - neighbor_strict_capability_cmd, - "neighbor strict-capability-match", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Strict capability negotiation match\n") +DEFUN_YANG (neighbor_strict_capability, + neighbor_strict_capability_cmd, + "neighbor strict-capability-match", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Strict capability negotiation match\n") { int idx_peer = 1; + char base_xpath[XPATH_MAXLEN]; - return peer_flag_set_vty(vty, argv[idx_peer]->arg, - PEER_FLAG_STRICT_CAP_MATCH); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change( + vty, "./capability-options/strict-capability", + NB_OP_MODIFY, "true"); + + return nb_cli_apply_changes(vty, base_xpath); } -DEFUN (no_neighbor_strict_capability, - no_neighbor_strict_capability_cmd, - "no neighbor strict-capability-match", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Strict capability negotiation match\n") +DEFUN_YANG (no_neighbor_strict_capability, + no_neighbor_strict_capability_cmd, + "no neighbor strict-capability-match", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Strict capability negotiation match\n") { int idx_peer = 2; + char base_xpath[XPATH_MAXLEN]; - return peer_flag_unset_vty(vty, argv[idx_peer]->arg, - PEER_FLAG_STRICT_CAP_MATCH); + if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, + sizeof(base_xpath), NULL) + < 0) + return CMD_WARNING_CONFIG_FAILED; + + nb_cli_enqueue_change( + vty, "./capability-options/strict-capability", + NB_OP_MODIFY, "false"); + + return nb_cli_apply_changes(vty, base_xpath); } DEFUN_YANG (neighbor_timers, From cc4440c3177f312294ec0cec836f41e453b367fb Mon Sep 17 00:00:00 2001 From: Chirag Shah Date: Sat, 24 Oct 2020 17:49:46 -0700 Subject: [PATCH 6/7] bgpd: shorten names for default originate nb callbacks Signed-off-by: Chirag Shah --- bgpd/bgp_nb.c | 225 +++++++- bgpd/bgp_nb.h | 108 +++- bgpd/bgp_nb_config.c | 825 ++++++++++++++++++++++++++++- yang/frr-bgp-common-structure.yang | 6 +- yang/frr-bgp.yang | 30 ++ 5 files changed, 1152 insertions(+), 42 deletions(-) diff --git a/bgpd/bgp_nb.c b/bgpd/bgp_nb.c index 44546d754a..a001980fc2 100644 --- a/bgpd/bgp_nb.c +++ b/bgpd/bgp_nb.c @@ -2571,16 +2571,16 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate-options/send-default-route", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate/originate", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_send_default_route_modify, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_originate_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate-options/rmap-policy-export", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate/route-map", .cbs = { - .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_modify, - .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_destroy, + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_destroy, } }, { @@ -2872,6 +2872,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/default-originate/originate", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/default-originate/route-map", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -3085,6 +3098,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/default-originate/originate", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/default-originate/route-map", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -3298,6 +3324,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/default-originate/originate", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/default-originate/route-map", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -3511,6 +3550,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/originate", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/route-map", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -3724,6 +3776,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/originate", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/route-map", + .cbs = { + .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_modify, + .destroy = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -4426,16 +4491,16 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate-options/send-default-route", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate/originate", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_send_default_route_modify, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_originate_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate-options/rmap-policy-export", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate/route-map", .cbs = { - .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_modify, - .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_destroy, + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_destroy, } }, { @@ -4727,6 +4792,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/default-originate/originate", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/default-originate/route-map", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -4940,6 +5018,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/default-originate/originate", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/default-originate/route-map", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -5152,6 +5243,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/default-originate/originate", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/default-originate/route-map", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -5364,6 +5468,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/originate", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/route-map", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -5577,6 +5694,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/originate", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/route-map", + .cbs = { + .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_modify, + .destroy = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -6279,16 +6409,16 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/default-originate-options/send-default-route", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/default-originate/originate", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_options_send_default_route_modify, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_originate_modify, } }, { - .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/default-originate-options/rmap-policy-export", + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/default-originate/route-map", .cbs = { - .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_modify, - .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_destroy, + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_destroy, } }, { @@ -6580,6 +6710,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/default-originate/originate", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/default-originate/route-map", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -6793,6 +6936,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/default-originate/originate", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/default-originate/route-map", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -7012,6 +7168,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/default-originate/originate", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/default-originate/route-map", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -7231,6 +7400,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/originate", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/route-map", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/attr-unchanged/as-path-unchanged", .cbs = { @@ -7444,6 +7626,19 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/originate", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_originate_modify, + } + }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/route-map", + .cbs = { + .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_modify, + .destroy = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_destroy, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/attr-unchanged/as-path-unchanged", .cbs = { diff --git a/bgpd/bgp_nb.h b/bgpd/bgp_nb.h index 63de94c001..9655cce40d 100644 --- a/bgpd/bgp_nb.h +++ b/bgpd/bgp_nb.h @@ -1100,11 +1100,11 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_as_path_options_allow struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_send_default_route_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_originate_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_create( struct nb_cb_create_args *args); @@ -1242,6 +1242,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_as_path_options_allow struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_attr_unchanged_next_hop_unchanged_modify( @@ -1336,6 +1342,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_as_path_options_all struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_attr_unchanged_next_hop_unchanged_modify( @@ -1430,6 +1442,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_as_path_options_all struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_attr_unchanged_next_hop_unchanged_modify( @@ -1524,6 +1542,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_optio struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_attr_unchanged_next_hop_unchanged_modify( @@ -1618,6 +1642,12 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_optio struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_attr_unchanged_next_hop_unchanged_modify( @@ -1914,11 +1944,11 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_as_path_op struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_send_default_route_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_originate_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_modify( struct nb_cb_modify_args *args); -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_destroy( struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_create( struct nb_cb_create_args *args); @@ -2056,6 +2086,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_as_path_op struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_attr_unchanged_next_hop_unchanged_modify( @@ -2150,6 +2186,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_as_path_ struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_attr_unchanged_next_hop_unchanged_modify( @@ -2244,6 +2286,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_as_path_ struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_attr_unchanged_next_hop_unchanged_modify( @@ -2338,6 +2386,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_as struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_attr_unchanged_next_hop_unchanged_modify( @@ -2432,6 +2486,12 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_as struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_attr_unchanged_next_hop_unchanged_modify( @@ -2728,11 +2788,11 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_as_path_options_a struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_options_send_default_route_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_originate_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_modify( struct nb_cb_modify_args *args); -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_destroy( struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_prefix_limit_direction_list_create( struct nb_cb_create_args *args); @@ -2870,6 +2930,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_as_path_options_a struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_attr_unchanged_next_hop_unchanged_modify( @@ -2964,6 +3030,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_as_path_options struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_attr_unchanged_next_hop_unchanged_modify( @@ -3058,6 +3130,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_as_path_options struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_attr_unchanged_next_hop_unchanged_modify( @@ -3152,6 +3230,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_o struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_attr_unchanged_next_hop_unchanged_modify( @@ -3246,6 +3330,12 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_o struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_options_replace_peer_as_modify( struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args); +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_attr_unchanged_as_path_unchanged_modify( struct nb_cb_modify_args *args); int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_attr_unchanged_next_hop_unchanged_modify( diff --git a/bgpd/bgp_nb_config.c b/bgpd/bgp_nb_config.c index 27477bef6c..bb19011ec0 100644 --- a/bgpd/bgp_nb_config.c +++ b/bgpd/bgp_nb_config.c @@ -13980,9 +13980,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_as_path_options_repla /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate-options/send-default-route + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate/originate */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_send_default_route_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_originate_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -13999,9 +13999,9 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_opt /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate-options/rmap-policy-export + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate/route-map */ -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_modify( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -14016,7 +14016,7 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_opt return NB_OK; } -int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_destroy( +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -15483,6 +15483,59 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_as_path_options_repla return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/default-originate/originate + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/default-originate/route-map + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/attr-unchanged/as-path-unchanged @@ -16388,6 +16441,59 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_as_path_options_rep return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/default-originate/originate + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/default-originate/route-map + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/attr-unchanged/as-path-unchanged @@ -17293,6 +17399,59 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_as_path_options_rep return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/default-originate/originate + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/default-originate/route-map + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/attr-unchanged/as-path-unchanged @@ -18198,6 +18357,59 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_optio return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/originate + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/route-map + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/attr-unchanged/as-path-unchanged @@ -19103,6 +19315,59 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_optio return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/originate + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/route-map + */ +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/attr-unchanged/as-path-unchanged @@ -22060,9 +22325,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_as_path_op /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate-options/send-default-route + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate/originate */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_send_default_route_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_originate_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -22079,9 +22344,9 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_or /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate-options/rmap-policy-export + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate/route-map */ -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_modify( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -22096,7 +22361,7 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_or return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_destroy( +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -23505,6 +23770,59 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_as_path_op return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/default-originate/originate + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/default-originate/route-map + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/attr-unchanged/as-path-unchanged @@ -24411,6 +24729,59 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_as_path_ return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/default-originate/originate + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/default-originate/route-map + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/attr-unchanged/as-path-unchanged @@ -25317,6 +25688,59 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_as_path_ return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/default-originate/originate + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/default-originate/route-map + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/attr-unchanged/as-path-unchanged @@ -26223,6 +26647,59 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_as return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/originate + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/route-map + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/attr-unchanged/as-path-unchanged @@ -27129,6 +27606,59 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_as return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/originate + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/route-map + */ +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/attr-unchanged/as-path-unchanged @@ -30086,9 +30616,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_as_path_options_r /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/default-originate-options/send-default-route + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/default-originate/originate */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_options_send_default_route_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_originate_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -30105,9 +30635,9 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate /* * XPath: - * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/default-originate-options/rmap-policy-export + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/default-originate/route-map */ -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_modify( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_modify( struct nb_cb_modify_args *args) { switch (args->event) { @@ -30122,7 +30652,7 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate return NB_OK; } -int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_options_rmap_policy_export_destroy( +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_default_originate_route_map_destroy( struct nb_cb_destroy_args *args) { switch (args->event) { @@ -31523,6 +32053,59 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_as_path_options_r return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/default-originate/originate + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/default-originate/route-map + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/attr-unchanged/as-path-unchanged @@ -32428,6 +33011,59 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_as_path_options return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/default-originate/originate + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/default-originate/route-map + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/attr-unchanged/as-path-unchanged @@ -33333,6 +33969,59 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_as_path_options return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/default-originate/originate + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/default-originate/route-map + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/attr-unchanged/as-path-unchanged @@ -34238,6 +34927,59 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_o return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/originate + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/route-map + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/attr-unchanged/as-path-unchanged @@ -35143,6 +35885,59 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_o return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/originate + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_originate_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/route-map + */ +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_modify( + struct nb_cb_modify_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + +int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_default_originate_route_map_destroy( + struct nb_cb_destroy_args *args) +{ + switch (args->event) { + case NB_EV_VALIDATE: + case NB_EV_PREPARE: + case NB_EV_ABORT: + case NB_EV_APPLY: + /* TODO: implement me. */ + break; + } + + return NB_OK; +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/attr-unchanged/as-path-unchanged diff --git a/yang/frr-bgp-common-structure.yang b/yang/frr-bgp-common-structure.yang index 9917560825..507928f28e 100644 --- a/yang/frr-bgp-common-structure.yang +++ b/yang/frr-bgp-common-structure.yang @@ -361,18 +361,18 @@ submodule frr-bgp-common-structure { description "Structural grouping used to include default-originate configuration for both BGP neighbors and peer groups."; - container default-originate-options { + container default-originate { description "default originate parameters for the BGP neighbor or group."; - leaf send-default-route { + leaf originate { type boolean; default "false"; description "If set to 'true', send the default-route to the neighbour(s)."; } - leaf rmap-policy-export { + leaf route-map { type frr-route-map:route-map-ref; description "Route-map to specify criteria to originate default."; diff --git a/yang/frr-bgp.yang b/yang/frr-bgp.yang index b555267563..2fb5d13fa7 100644 --- a/yang/frr-bgp.yang +++ b/yang/frr-bgp.yang @@ -577,6 +577,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -603,6 +605,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -629,6 +633,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -655,6 +661,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -681,6 +689,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -824,6 +834,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -850,6 +862,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -876,6 +890,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -902,6 +918,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -928,6 +946,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -1071,6 +1091,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -1097,6 +1119,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -1123,6 +1147,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -1149,6 +1175,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; @@ -1175,6 +1203,8 @@ module frr-bgp { uses structure-neighbor-group-as-path-options; + uses structure-neighbor-default-originate-options; + uses structure-neighbor-group-attr-unchanged; uses structure-neighbor-group-orf-capability; From 7c54def2926e85d760a7ab42f879a6545630878f Mon Sep 17 00:00:00 2001 From: Chirag Shah Date: Sun, 25 Oct 2020 11:04:32 -0700 Subject: [PATCH 7/7] bgpd: default originate transactional callbacks Signed-off-by: Chirag Shah --- bgpd/bgp_nb.c | 108 +++++++++++++++++++++++++++++++++++++ bgpd/bgp_nb.h | 6 +++ bgpd/bgp_nb_config.c | 125 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 239 insertions(+) diff --git a/bgpd/bgp_nb.c b/bgpd/bgp_nb.c index a001980fc2..644b03dff0 100644 --- a/bgpd/bgp_nb.c +++ b/bgpd/bgp_nb.c @@ -2570,6 +2570,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate", + .cbs = { + .apply_finish = bgp_neighbor_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate/originate", .cbs = { @@ -2872,6 +2878,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/default-originate", + .cbs = { + .apply_finish = bgp_neighbor_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-unicast/default-originate/originate", .cbs = { @@ -3098,6 +3110,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_multicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/default-originate", + .cbs = { + .apply_finish = bgp_neighbor_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-multicast/default-originate/originate", .cbs = { @@ -3324,6 +3342,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_multicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/default-originate", + .cbs = { + .apply_finish = bgp_neighbor_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-multicast/default-originate/originate", .cbs = { @@ -3550,6 +3574,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate", + .cbs = { + .apply_finish = bgp_neighbor_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/originate", .cbs = { @@ -3776,6 +3806,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate", + .cbs = { + .apply_finish = bgp_neighbor_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/originate", .cbs = { @@ -4490,6 +4526,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate", + .cbs = { + .apply_finish = bgp_unnumbered_neighbor_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate/originate", .cbs = { @@ -4792,6 +4834,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/default-originate", + .cbs = { + .apply_finish = bgp_unnumbered_neighbor_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-unicast/default-originate/originate", .cbs = { @@ -5018,6 +5066,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_multicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/default-originate", + .cbs = { + .apply_finish = bgp_unnumbered_neighbor_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-multicast/default-originate/originate", .cbs = { @@ -5243,6 +5297,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_multicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/default-originate", + .cbs = { + .apply_finish = bgp_unnumbered_neighbor_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-multicast/default-originate/originate", .cbs = { @@ -5468,6 +5528,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate", + .cbs = { + .apply_finish = bgp_unnumbered_neighbor_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/originate", .cbs = { @@ -5694,6 +5760,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate", + .cbs = { + .apply_finish = bgp_unnumbered_neighbor_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/originate", .cbs = { @@ -6408,6 +6480,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/default-originate", + .cbs = { + .apply_finish = bgp_peer_group_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/default-originate/originate", .cbs = { @@ -6710,6 +6788,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/default-originate", + .cbs = { + .apply_finish = bgp_peer_group_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-unicast/default-originate/originate", .cbs = { @@ -6936,6 +7020,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_multicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/default-originate", + .cbs = { + .apply_finish = bgp_peer_group_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-multicast/default-originate/originate", .cbs = { @@ -7168,6 +7258,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_multicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/default-originate", + .cbs = { + .apply_finish = bgp_peer_group_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-multicast/default-originate/originate", .cbs = { @@ -7400,6 +7496,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_labeled_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate", + .cbs = { + .apply_finish = bgp_peer_group_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-labeled-unicast/default-originate/originate", .cbs = { @@ -7626,6 +7728,12 @@ const struct frr_yang_module_info frr_bgp_info = { .modify = bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv6_labeled_unicast_as_path_options_replace_peer_as_modify, } }, + { + .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate", + .cbs = { + .apply_finish = bgp_peer_group_afi_safi_default_originate_apply_finish, + } + }, { .xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv6-labeled-unicast/default-originate/originate", .cbs = { diff --git a/bgpd/bgp_nb.h b/bgpd/bgp_nb.h index 9655cce40d..c78c9c34ad 100644 --- a/bgpd/bgp_nb.h +++ b/bgpd/bgp_nb.h @@ -3761,6 +3761,12 @@ void bgp_unnumbered_neighbor_afi_safi_prefix_limit_apply_finish( struct nb_cb_apply_finish_args *args); void bgp_peer_group_afi_safi_prefix_limit_apply_finish( struct nb_cb_apply_finish_args *args); +void bgp_neighbor_afi_safi_default_originate_apply_finish( + struct nb_cb_apply_finish_args *args); +void bgp_unnumbered_neighbor_afi_safi_default_originate_apply_finish( + struct nb_cb_apply_finish_args *args); +void bgp_peer_group_afi_safi_default_originate_apply_finish( + struct nb_cb_apply_finish_args *args); /* xpath macros */ /* route-list */ diff --git a/bgpd/bgp_nb_config.c b/bgpd/bgp_nb_config.c index bb19011ec0..096fd11d18 100644 --- a/bgpd/bgp_nb_config.c +++ b/bgpd/bgp_nb_config.c @@ -13978,6 +13978,70 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_ipv4_unicast_as_path_options_repla return NB_OK; } +static int +bgp_peer_afi_safi_default_originate_apply(struct nb_cb_apply_finish_args *args, + struct peer *peer, afi_t afi, + safi_t safi) +{ + bool originate = false; + int ret = 0; + struct route_map *route_map = NULL; + const char *rmap = NULL; + + originate = yang_dnode_get_bool(args->dnode, "./originate"); + + if (yang_dnode_exists(args->dnode, "./route-map")) { + rmap = yang_dnode_get_string(args->dnode, "./route-map"); + route_map = route_map_lookup_by_name(rmap); + if (!route_map) { + snprintf(args->errmsg, args->errmsg_len, + "The route-map '%s' does not exist.", rmap); + return -1; + } + } + + // zlog_debug("%s: originate %u route-map %s", __func__, originate, + // rmap); + if (originate) + ret = peer_default_originate_set(peer, afi, safi, rmap, + route_map); + else + ret = peer_default_originate_unset(peer, afi, safi); + + return bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret); +} + +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate + */ +void bgp_neighbor_afi_safi_default_originate_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "neighbor"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./remote-address"); + peer = bgp_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return; + + bgp_peer_afi_safi_default_originate_apply(args, peer, afi, safi); +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate/originate @@ -22323,6 +22387,37 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_ipv4_unicast_as_path_op return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate + */ +void bgp_unnumbered_neighbor_afi_safi_default_originate_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "unnumbered-neighbor"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./interface"); + peer = bgp_unnumbered_neighbor_peer_lookup(bgp, peer_str, args->errmsg, + args->errmsg_len); + if (!peer) + return; + + bgp_peer_afi_safi_default_originate_apply(args, peer, afi, safi); +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate/originate @@ -30614,6 +30709,36 @@ int bgp_peer_groups_peer_group_afi_safis_afi_safi_ipv4_unicast_as_path_options_r return NB_OK; } +/* + * XPath: + * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/afi-safis/afi-safi/ipv4-unicast/default-originate + */ +void bgp_peer_group_afi_safi_default_originate_apply_finish( + struct nb_cb_apply_finish_args *args) +{ + struct bgp *bgp; + const char *peer_str; + struct peer *peer; + const struct lyd_node *nbr_dnode; + const struct lyd_node *nbr_af_dnode; + const char *af_name; + afi_t afi; + safi_t safi; + + nbr_af_dnode = yang_dnode_get_parent(args->dnode, "afi-safi"); + af_name = yang_dnode_get_string(nbr_af_dnode, "./afi-safi-name"); + yang_afi_safi_identity2value(af_name, &afi, &safi); + + nbr_dnode = yang_dnode_get_parent(nbr_af_dnode, "peer-group"); + bgp = nb_running_get_entry(nbr_dnode, NULL, true); + peer_str = yang_dnode_get_string(nbr_dnode, "./peer-group-name"); + peer = bgp_peer_group_peer_lookup(bgp, peer_str); + if (!peer) + return; + + bgp_peer_afi_safi_default_originate_apply(args, peer, afi, safi); +} + /* * XPath: * /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/default-originate/originate