diff options
| -rw-r--r-- | bgpd/bgp_nb.c | 59 | ||||
| -rw-r--r-- | bgpd/bgp_nb.h | 52 | ||||
| -rw-r--r-- | bgpd/bgp_nb_config.c | 5778 | ||||
| -rw-r--r-- | bgpd/bgp_vty.c | 3458 | ||||
| -rw-r--r-- | bgpd/bgp_vty.h | 15 |
5 files changed, 1995 insertions, 7367 deletions
diff --git a/bgpd/bgp_nb.c b/bgpd/bgp_nb.c index 5dc0c07dd5..09c20b55db 100644 --- a/bgpd/bgp_nb.c +++ b/bgpd/bgp_nb.c @@ -616,16 +616,9 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .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, } }, { @@ -682,16 +675,9 @@ const struct frr_yang_module_info frr_bgp_info = { } }, { - .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, } }, { @@ -759,7 +745,6 @@ 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, } }, { @@ -866,16 +851,9 @@ 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/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, } }, { @@ -906,16 +884,9 @@ 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/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, } }, { @@ -972,16 +943,9 @@ 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/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, } }, { @@ -1049,7 +1013,6 @@ 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, } }, { @@ -1157,16 +1120,9 @@ 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/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, } }, { @@ -1197,16 +1153,9 @@ 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/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, } }, { @@ -1263,16 +1212,9 @@ 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/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, } }, { @@ -1340,7 +1282,6 @@ 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 cf5c6c41bf..dcd49712f2 100644 --- a/bgpd/bgp_nb.h +++ b/bgpd/bgp_nb.h @@ -211,8 +211,6 @@ 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( @@ -229,8 +227,6 @@ 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_replace_as_modify( @@ -259,8 +255,6 @@ 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( @@ -295,8 +289,6 @@ 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( @@ -343,8 +335,6 @@ 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( @@ -361,8 +351,6 @@ 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_replace_as_modify( @@ -391,8 +379,6 @@ 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( @@ -427,8 +413,6 @@ 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( @@ -475,8 +459,6 @@ 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( @@ -493,8 +475,6 @@ 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_replace_as_modify( @@ -523,8 +503,6 @@ 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( @@ -559,8 +537,6 @@ 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( @@ -3599,22 +3575,6 @@ 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 */ @@ -3630,17 +3590,5 @@ void bgp_peer_groups_peer_group_local_as_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 ade5038217..a053264025 100644 --- a/bgpd/bgp_nb_config.c +++ b/bgpd/bgp_nb_config.c @@ -2109,73 +2109,18 @@ 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: - /* 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; - } + /* TODO: implement me. */ break; } @@ -2184,65 +2129,12 @@ 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: - - 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); - } - } - + /* TODO: implement me. */ break; } @@ -2256,38 +2148,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -2297,35 +2163,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -2338,31 +2181,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -2371,33 +2195,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -2410,67 +2213,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -2479,33 +2227,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -2518,29 +2245,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -2549,26 +2259,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -2581,44 +2277,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -2627,31 +2291,12 @@ 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: - 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; - - + /* TODO: implement me. */ break; } @@ -2683,28 +2328,12 @@ 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: - 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); + /* TODO: implement me. */ break; } @@ -2717,30 +2346,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -2749,26 +2360,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -2781,32 +2378,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -2820,29 +2397,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -2875,29 +2435,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -2949,30 +2492,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -2982,26 +2507,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -3015,28 +2526,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -3046,26 +2541,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -3079,45 +2560,6 @@ 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); - 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: case NB_EV_PREPARE: @@ -3137,33 +2579,12 @@ int bgp_neighbors_neighbor_neighbor_remote_as_remote_as_type_destroy( 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: - 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); - if (bgp_nb_errmsg_return(args->errmsg, args->errmsg_len, ret) - < 0) - return NB_ERR_INCONSISTENCY; - - + /* TODO: implement me. */ break; } @@ -3192,46 +2613,12 @@ 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: - 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; - - + /* TODO: implement me. */ break; } @@ -3241,32 +2628,12 @@ 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: - 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; - - + /* TODO: implement me. */ break; } @@ -3280,39 +2647,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -3322,29 +2662,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -3358,33 +2681,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -3393,40 +2695,6 @@ int 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 - */ -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, "./replace-as")) - replace_as = yang_dnode_get_bool(args->dnode, "./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 */ int bgp_neighbors_neighbor_local_as_local_as_modify( @@ -3444,40 +2712,6 @@ 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 @@ -3707,34 +2941,6 @@ int 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 - */ -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 */ int bgp_neighbors_neighbor_admin_shutdown_enable_modify( @@ -3752,21 +2958,6 @@ 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 @@ -3910,30 +3101,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -3943,28 +3116,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -3978,30 +3135,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -4011,28 +3150,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -4046,37 +3169,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -4090,44 +3188,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -4175,49 +3241,6 @@ 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: case NB_EV_PREPARE: @@ -4230,90 +3253,18 @@ int bgp_neighbors_neighbor_afi_safis_afi_safi_enabled_destroy( 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: - 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, v6_only, - peer_grp_str, as_type, as, - args->errmsg, args->errmsg_len)) - return NB_ERR_INCONSISTENCY; - + /* TODO: implement me. */ break; } @@ -4322,34 +3273,12 @@ 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: - 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; - } - + /* TODO: implement me. */ break; } @@ -4363,26 +3292,12 @@ 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: - 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, v6_only, NULL, - AS_UNSPECIFIED, 0, args->errmsg, - args->errmsg_len)) - return NB_ERR_INCONSISTENCY; - + /* TODO: implement me. */ break; } @@ -4396,60 +3311,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -4459,33 +3326,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -4499,27 +3345,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -4529,25 +3360,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -4561,44 +3379,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -4608,27 +3394,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -4661,28 +3432,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -4696,29 +3451,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -4728,26 +3466,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -4761,31 +3485,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -4799,31 +3504,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -4856,31 +3542,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -4932,30 +3599,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -4965,26 +3614,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -4998,28 +3633,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -5029,26 +3648,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -5057,39 +3662,6 @@ int 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 - */ -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; - - 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); - - 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 */ int bgp_neighbors_unnumbered_neighbor_neighbor_remote_as_remote_as_type_modify( @@ -5107,33 +3679,6 @@ 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 @@ -5175,42 +3720,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -5220,28 +3735,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -5255,38 +3754,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -5296,28 +3769,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -5331,32 +3788,12 @@ 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; - + /* TODO: implement me. */ break; } @@ -5365,42 +3802,6 @@ int bgp_neighbors_unnumbered_neighbor_ebgp_multihop_disable_connected_check_modi /* * 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, "./replace-as")) - replace_as = yang_dnode_get_bool(args->dnode, "./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( @@ -5418,21 +3819,6 @@ int bgp_neighbors_unnumbered_neighbor_local_as_local_as_modify( return NB_OK; } -int bgp_neighbors_unnumbered_neighbor_local_as_local_as_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/local-as/no-prepend @@ -5662,34 +4048,6 @@ int 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 - */ -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 */ int bgp_neighbors_unnumbered_neighbor_admin_shutdown_enable_modify( @@ -5707,21 +4065,6 @@ 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 @@ -5865,28 +4208,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -5896,26 +4223,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -5929,28 +4242,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -5960,27 +4257,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -5994,38 +4276,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -6039,45 +4295,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -6125,51 +4348,6 @@ 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: case NB_EV_PREPARE: @@ -6182,65 +4360,18 @@ int bgp_neighbors_unnumbered_neighbor_afi_safis_afi_safi_enabled_destroy( 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: - 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; - } + /* TODO: implement me. */ break; } @@ -6249,26 +4380,12 @@ 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: - 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); - } - + /* TODO: implement me. */ break; } @@ -6349,25 +4466,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -6376,23 +4480,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -6406,44 +4499,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -6453,29 +4514,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -6507,28 +4551,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -6542,26 +4570,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -6571,25 +4585,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -6603,31 +4604,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -6641,30 +4623,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -6697,30 +4661,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -6772,29 +4718,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -6804,25 +4733,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -6836,27 +4752,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -6866,25 +4767,12 @@ 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: - 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); - + /* TODO: implement me. */ break; } @@ -6893,33 +4781,6 @@ int 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 - */ -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 */ int bgp_peer_groups_peer_group_neighbor_remote_as_remote_as_type_modify( @@ -6937,32 +4798,6 @@ 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 @@ -7004,44 +4839,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -7051,30 +4854,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -7088,40 +4873,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -7131,30 +4888,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -7168,32 +4907,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -7202,44 +4921,6 @@ int 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 - */ -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, "./replace-as")) - replace_as = yang_dnode_get_bool(args->dnode, "./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 */ int bgp_peer_groups_peer_group_local_as_local_as_modify( @@ -7257,36 +4938,6 @@ 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 @@ -7516,33 +5167,6 @@ int 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 - */ -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 */ int bgp_peer_groups_peer_group_admin_shutdown_enable_modify( @@ -7560,21 +5184,6 @@ 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 @@ -7718,29 +5327,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -7750,27 +5342,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -7784,29 +5361,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -7816,27 +5376,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -7850,37 +5395,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -7894,49 +5414,12 @@ 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: - 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; - + /* TODO: implement me. */ break; } @@ -7984,48 +5467,6 @@ 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: case NB_EV_PREPARE: @@ -13740,36 +11181,6 @@ 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 @@ -13868,12 +11279,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14235,12 +11642,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14258,12 +11661,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14281,12 +11680,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14304,12 +11699,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14327,12 +11718,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14350,79 +11737,14 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ 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 @@ -14434,10 +11756,8 @@ 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: - return bgp_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -14451,10 +11771,8 @@ 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: - return bgp_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -14472,12 +11790,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14495,12 +11809,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14518,12 +11828,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14541,12 +11847,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14564,12 +11866,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14587,12 +11885,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14610,12 +11904,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14633,12 +11923,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -14656,12 +11942,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15227,12 +12509,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15250,12 +12528,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15273,12 +12547,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15296,12 +12566,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15712,12 +12978,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15735,12 +12997,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15758,12 +13016,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15781,12 +13035,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15804,12 +13054,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15827,12 +13073,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15850,12 +13092,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15873,12 +13111,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15896,12 +13130,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15919,12 +13149,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15942,12 +13168,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15965,12 +13187,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -15988,10 +13206,8 @@ 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: - return bgp_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -16005,10 +13221,8 @@ 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: - return bgp_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -16113,12 +13327,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16136,12 +13346,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16159,12 +13365,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16182,12 +13384,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16598,12 +13796,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16621,12 +13815,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16644,12 +13834,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16667,12 +13853,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16690,12 +13872,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16713,12 +13891,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16736,12 +13910,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16759,12 +13929,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16782,12 +13948,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16805,12 +13967,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16828,12 +13986,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16851,12 +14005,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -16874,10 +14024,8 @@ 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: - return bgp_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -16891,10 +14039,8 @@ 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: - return bgp_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -16999,12 +14145,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17022,12 +14164,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17045,12 +14183,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17068,12 +14202,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17484,12 +14614,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17507,12 +14633,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17530,12 +14652,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17553,12 +14671,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17576,12 +14690,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17599,12 +14709,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17622,12 +14728,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17645,12 +14747,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17668,12 +14766,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17691,12 +14785,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17714,12 +14804,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17737,12 +14823,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17760,10 +14842,8 @@ 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: - return bgp_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -17777,10 +14857,8 @@ 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: - return bgp_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -17885,12 +14963,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17908,12 +14982,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17931,12 +15001,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -17954,12 +15020,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18370,12 +15432,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18393,12 +15451,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18416,12 +15470,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18439,12 +15489,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18462,12 +15508,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18485,12 +15527,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18508,12 +15546,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18531,12 +15565,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18554,12 +15584,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18577,12 +15603,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18600,12 +15622,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18623,12 +15641,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18646,10 +15660,8 @@ 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: - return bgp_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -18663,10 +15675,8 @@ 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: - return bgp_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -18771,12 +15781,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18794,12 +15800,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18817,12 +15819,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -18840,12 +15838,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19256,12 +16250,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19279,12 +16269,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19302,12 +16288,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19325,12 +16307,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19348,12 +16326,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19371,12 +16345,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19394,12 +16364,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19417,12 +16383,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19440,12 +16402,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19463,12 +16421,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19486,12 +16440,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19509,12 +16459,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19532,10 +16478,8 @@ 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: - return bgp_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -19549,10 +16493,8 @@ 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: - return bgp_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -19657,12 +16599,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19680,12 +16618,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19703,12 +16637,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -19726,12 +16656,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20040,12 +16966,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20063,12 +16985,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20086,12 +17004,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20109,12 +17023,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20132,12 +17042,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20155,12 +17061,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20178,12 +17080,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20201,12 +17099,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20224,12 +17118,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20247,12 +17137,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20270,12 +17156,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20293,12 +17175,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20316,10 +17194,8 @@ 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: - return bgp_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -20333,10 +17209,8 @@ 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: - return bgp_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -20441,12 +17315,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20464,12 +17334,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20487,12 +17353,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20510,12 +17372,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20824,12 +17682,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20847,12 +17701,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20870,12 +17720,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20893,12 +17739,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20916,12 +17758,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20939,12 +17777,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20962,12 +17796,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -20985,12 +17815,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21008,12 +17834,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21031,12 +17853,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21054,12 +17872,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21077,12 +17891,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21100,10 +17910,8 @@ 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: - return bgp_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -21117,10 +17925,8 @@ 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: - return bgp_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -21206,12 +18012,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21229,12 +18031,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21252,12 +18050,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21275,12 +18069,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21298,12 +18088,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21321,12 +18107,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21344,12 +18126,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21367,12 +18145,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21390,12 +18164,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21413,12 +18183,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21436,12 +18202,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21459,12 +18221,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21482,12 +18240,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21505,12 +18259,8 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -21528,49 +18278,14 @@ 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: - return bgp_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ 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 @@ -21669,12 +18384,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22036,12 +18747,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22059,12 +18766,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22082,12 +18785,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22105,12 +18804,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22128,12 +18823,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22151,80 +18842,14 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ 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 @@ -22236,10 +18861,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -22253,10 +18876,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -22274,12 +18895,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22297,12 +18914,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22320,12 +18933,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22343,12 +18952,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22366,12 +18971,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22389,12 +18990,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22412,12 +19009,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22435,12 +19028,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -22458,12 +19047,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23029,12 +19614,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23052,12 +19633,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23075,12 +19652,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23098,12 +19671,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23514,12 +20083,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23537,12 +20102,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23560,12 +20121,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23583,12 +20140,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23606,12 +20159,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23629,12 +20178,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23652,12 +20197,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23675,12 +20216,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23698,12 +20235,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23721,12 +20254,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23744,12 +20273,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23767,12 +20292,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23790,10 +20311,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -23807,10 +20326,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -23915,12 +20432,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23938,12 +20451,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23961,12 +20470,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -23984,12 +20489,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24400,12 +20901,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24423,12 +20920,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24446,12 +20939,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24469,12 +20958,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24492,12 +20977,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24515,12 +20996,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24538,12 +21015,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24561,12 +21034,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24584,12 +21053,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24607,12 +21072,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24630,12 +21091,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24653,12 +21110,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24676,10 +21129,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -24693,10 +21144,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -24801,12 +21250,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24824,12 +21269,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24847,12 +21288,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -24870,12 +21307,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25286,12 +21719,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25309,12 +21738,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25332,12 +21757,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25355,12 +21776,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25378,12 +21795,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25401,12 +21814,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25424,12 +21833,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25447,12 +21852,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25470,12 +21871,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25493,12 +21890,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25516,12 +21909,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25539,12 +21928,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25562,10 +21947,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -25579,10 +21962,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -25687,12 +22068,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25710,12 +22087,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25733,12 +22106,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -25756,12 +22125,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26172,12 +22537,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26195,12 +22556,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26218,12 +22575,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26241,12 +22594,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26264,12 +22613,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26287,12 +22632,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26310,12 +22651,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26333,12 +22670,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26356,12 +22689,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26379,12 +22708,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26402,12 +22727,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26425,12 +22746,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26448,10 +22765,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -26465,10 +22780,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -26573,12 +22886,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26596,12 +22905,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26619,12 +22924,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -26642,12 +22943,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27058,12 +23355,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27081,12 +23374,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27104,12 +23393,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27127,12 +23412,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27150,12 +23431,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27173,12 +23450,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27196,12 +23469,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27219,12 +23488,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27242,12 +23507,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27265,12 +23526,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27288,12 +23545,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27311,12 +23564,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27334,10 +23583,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -27351,10 +23598,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -27459,12 +23704,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27482,12 +23723,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27505,12 +23742,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27528,12 +23761,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27842,12 +24071,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27865,12 +24090,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27888,12 +24109,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27911,12 +24128,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27934,12 +24147,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27957,12 +24166,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -27980,12 +24185,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28003,12 +24204,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28026,12 +24223,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28049,12 +24242,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28072,12 +24261,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28095,12 +24280,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28118,10 +24299,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -28135,10 +24314,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -28243,12 +24420,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28266,12 +24439,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28289,12 +24458,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28312,12 +24477,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28626,12 +24787,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28649,12 +24806,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28672,12 +24825,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28695,12 +24844,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28718,12 +24863,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28741,12 +24882,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28764,12 +24901,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28787,12 +24920,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28810,12 +24939,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28833,12 +24958,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28856,12 +24977,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28879,12 +24996,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -28902,10 +25015,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -28919,10 +25030,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -29008,12 +25117,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29031,12 +25136,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29054,12 +25155,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29077,12 +25174,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29100,12 +25193,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29123,12 +25212,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29146,12 +25231,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29169,12 +25250,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29192,12 +25269,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29215,12 +25288,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29238,12 +25307,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29261,12 +25326,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29284,12 +25345,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29307,12 +25364,8 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29330,46 +25383,14 @@ 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: - return bgp_unnumbered_neighbor_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ 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 @@ -29468,12 +25489,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29835,12 +25852,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29858,12 +25871,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29881,12 +25890,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29904,12 +25909,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29927,12 +25928,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -29950,77 +25947,14 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ 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 @@ -30032,10 +25966,8 @@ 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: - return bgp_peer_group_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -30049,10 +25981,8 @@ 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: - return bgp_peer_group_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -30070,12 +26000,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -30093,12 +26019,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -30116,12 +26038,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -30139,12 +26057,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -30162,12 +26076,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -30185,12 +26095,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -30208,12 +26114,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -30231,12 +26133,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -30254,12 +26152,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -30825,12 +26719,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -30848,12 +26738,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -30871,12 +26757,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -30894,12 +26776,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31310,12 +27188,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31333,12 +27207,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31356,12 +27226,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31379,12 +27245,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31402,12 +27264,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31425,12 +27283,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31448,12 +27302,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31471,12 +27321,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31494,12 +27340,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31517,12 +27359,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31540,12 +27378,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31563,12 +27397,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31586,10 +27416,8 @@ 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: - return bgp_peer_group_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -31603,10 +27431,8 @@ 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: - return bgp_peer_group_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -31711,12 +27537,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31734,12 +27556,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31757,12 +27575,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -31780,12 +27594,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32196,12 +28006,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32219,12 +28025,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32242,12 +28044,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32265,12 +28063,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32288,12 +28082,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32311,12 +28101,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32334,12 +28120,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32357,12 +28139,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32380,12 +28158,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32403,12 +28177,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32426,12 +28196,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32449,12 +28215,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32472,10 +28234,8 @@ 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: - return bgp_peer_group_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -32489,10 +28249,8 @@ 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: - return bgp_peer_group_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -32597,12 +28355,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32620,12 +28374,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32643,12 +28393,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -32666,12 +28412,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33082,12 +28824,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33105,12 +28843,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33128,12 +28862,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33151,12 +28881,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33174,12 +28900,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33197,12 +28919,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33220,12 +28938,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33243,12 +28957,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33266,12 +28976,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33289,12 +28995,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33312,12 +29014,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33335,12 +29033,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33358,10 +29052,8 @@ 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: - return bgp_peer_group_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -33375,10 +29067,8 @@ 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: - return bgp_peer_group_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -33483,12 +29173,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33506,12 +29192,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33529,12 +29211,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33552,12 +29230,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33968,12 +29642,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -33991,12 +29661,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34014,12 +29680,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34037,12 +29699,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34060,12 +29718,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34083,12 +29737,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34106,12 +29756,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34129,12 +29775,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34152,12 +29794,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34175,12 +29813,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34198,12 +29832,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34221,12 +29851,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34244,10 +29870,8 @@ 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: - return bgp_peer_group_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -34261,10 +29885,8 @@ 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: - return bgp_peer_group_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -34369,12 +29991,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34392,12 +30010,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34415,12 +30029,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34438,12 +30048,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34854,12 +30460,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34877,12 +30479,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34900,12 +30498,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34923,12 +30517,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34946,12 +30536,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34969,12 +30555,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -34992,12 +30574,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35015,12 +30593,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35038,12 +30612,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35061,12 +30631,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35084,12 +30650,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35107,12 +30669,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35130,10 +30688,8 @@ 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: - return bgp_peer_group_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -35147,10 +30703,8 @@ 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: - return bgp_peer_group_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -35255,12 +30809,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35278,12 +30828,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35301,12 +30847,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35324,12 +30866,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35638,12 +31176,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35661,12 +31195,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35684,12 +31214,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35707,12 +31233,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35730,12 +31252,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35753,12 +31271,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35776,12 +31290,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35799,12 +31309,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35822,12 +31328,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35845,12 +31347,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35868,12 +31366,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35891,12 +31385,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -35914,10 +31404,8 @@ 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: - return bgp_peer_group_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -35931,10 +31419,8 @@ 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: - return bgp_peer_group_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -36039,12 +31525,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36062,12 +31544,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36085,12 +31563,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36108,12 +31582,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36422,12 +31892,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36445,12 +31911,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36468,12 +31930,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36491,12 +31949,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_ALL_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36514,12 +31968,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36537,12 +31987,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REMOVE_PRIVATE_AS_REPLACE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36560,12 +32006,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36583,12 +32025,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36606,12 +32044,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36629,12 +32063,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_EXT_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36652,12 +32082,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SEND_LARGE_COMMUNITY, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36675,12 +32101,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36698,10 +32120,8 @@ 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: - return bgp_peer_group_afi_safi_weight_modify(args); - + /* TODO: implement me. */ break; } @@ -36715,10 +32135,8 @@ 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: - return bgp_peer_group_afi_safi_weight_destroy(args); - + /* TODO: implement me. */ break; } @@ -36804,12 +32222,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_OVERRIDE, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36827,12 +32241,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_AS_PATH_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36850,12 +32260,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36873,12 +32279,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_MED_UNCHANGED, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36896,12 +32298,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36919,12 +32317,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_FORCE_NEXTHOP_SELF, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36942,12 +32336,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36965,12 +32355,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -36988,12 +32374,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -37011,12 +32393,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -37034,12 +32412,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -37057,12 +32431,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -37080,12 +32450,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_REFLECTOR_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -37103,12 +32469,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_RSERVER_CLIENT, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } @@ -37126,12 +32488,8 @@ 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: - return bgp_peer_group_afi_safi_flag_modify( - args, PEER_FLAG_SOFT_RECONFIG, - yang_dnode_get_bool(args->dnode, NULL)); - + /* TODO: implement me. */ break; } diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 1860e539f2..bceb506b60 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -159,10 +159,6 @@ 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) { @@ -678,7 +674,7 @@ int bgp_vty_find_and_parse_afi_safi_bgp(struct vty *vty, return *idx; } -bool peer_address_self_check(struct bgp *bgp, union sockunion *su) +static bool peer_address_self_check(struct bgp *bgp, union sockunion *su) { struct interface *ifp = NULL; @@ -695,6 +691,49 @@ 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. @@ -741,98 +780,6 @@ 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 = "Cannot activate peer for both 'ipv4 unicast' and 'ipv4 labeled-unicast'"; - 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; @@ -4432,6 +4379,69 @@ 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) +{ + 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); + + /* 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); + } + + /* 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", @@ -4497,67 +4507,30 @@ 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_YANG(neighbor_remote_as, - neighbor_remote_as_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> 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 (neighbor_remote_as, + neighbor_remote_as_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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_existsf(vty->candidate_config->dnode, "%s%s", - VTY_CURR_XPATH, unnbr_xpath + 1)) { - strlcpy(base_xpath, unnbr_xpath, sizeof(base_xpath)); - } else if (yang_dnode_existsf(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); + return peer_remote_as_vty(vty, argv[idx_peer]->arg, + argv[idx_remote_as]->arg); } -int peer_conf_interface_create(struct bgp *bgp, const char *conf_if, - bool v6only, const char *peer_group_name, - int as_type, as_t as, char *errmsg, - size_t errmsg_len) +static int peer_conf_interface_get(struct vty *vty, const char *conf_if, + int v6only, + const char *peer_group_name, + const char *as_str) { + VTY_DECLVAR_CONTEXT(bgp, bgp); + as_t as = 0; + int as_type = AS_UNSPECIFIED; struct peer *peer; struct peer_group *group; int ret = 0; @@ -4565,23 +4538,33 @@ int peer_conf_interface_create(struct bgp *bgp, const char *conf_if, group = peer_group_lookup(bgp, conf_if); if (group) { - snprintf(errmsg, errmsg_len, - "Name conflict with peer-group \n"); - return -1; + 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; + } } peer = peer_lookup_by_conf_if(bgp, conf_if); if (peer) { - if (as_type != AS_UNSPECIFIED) + if (as_str) ret = peer_remote_as(bgp, NULL, conf_if, &as, as_type); } else { peer = peer_create(NULL, conf_if, bgp, bgp->as, as, as_type, NULL); if (!peer) { - snprintf(errmsg, errmsg_len, - "BGP failed to create peer\n"); - return -1; + vty_out(vty, "%% BGP failed to create peer\n"); + return CMD_WARNING_CONFIG_FAILED; } if (v6only) @@ -4624,156 +4607,119 @@ int peer_conf_interface_create(struct bgp *bgp, const char *conf_if, if (peer_group_name) { group = peer_group_lookup(bgp, peer_group_name); if (!group) { - snprintf(errmsg, errmsg_len, - "Configure the peer-group first\n"); - return -1; + vty_out(vty, "%% Configure the peer-group first\n"); + return CMD_WARNING_CONFIG_FAILED; } ret = peer_group_bind(bgp, NULL, peer, group, &as); } - return bgp_nb_errmsg_return(errmsg, errmsg_len, ret); + return bgp_vty_return(vty, ret); } -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") +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") { 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) - nb_cli_enqueue_change(vty, "./peer-group", NB_OP_MODIFY, - argv[idx_peer_group_word]->arg); - - return nb_cli_apply_changes(vty, base_xpath); + return peer_conf_interface_get( + vty, argv[idx_word]->arg, 0, + argv[idx_peer_group_word]->arg, NULL); + else + return peer_conf_interface_get(vty, argv[idx_word]->arg, 0, + NULL, NULL); } -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") +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") { 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) - nb_cli_enqueue_change(vty, "./peer-group", NB_OP_MODIFY, - argv[idx_peer_group_word]->arg); - - nb_cli_enqueue_change(vty, "./v6only", NB_OP_MODIFY, "true"); + return peer_conf_interface_get( + vty, argv[idx_word]->arg, 1, + argv[idx_peer_group_word]->arg, NULL); - return nb_cli_apply_changes(vty, base_xpath); + return peer_conf_interface_get(vty, argv[idx_word]->arg, 1, NULL, NULL); } -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") +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") { int idx_word = 1; int idx_remote_as = 4; - 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); + return peer_conf_interface_get(vty, argv[idx_word]->arg, 0, NULL, + argv[idx_remote_as]->arg); } -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") +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") { int idx_word = 1; int idx_remote_as = 5; - 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); + return peer_conf_interface_get(vty, argv[idx_word]->arg, 1, NULL, + argv[idx_remote_as]->arg); } -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") +DEFUN (neighbor_peer_group, + neighbor_peer_group_cmd, + "neighbor WORD peer-group", + NEIGHBOR_STR + "Interface name or neighbor tag\n" + "Configure peer-group\n") { - char base_xpath[XPATH_MAXLEN]; + VTY_DECLVAR_CONTEXT(bgp, bgp); int idx_word = 1; + struct peer *peer; + struct peer_group *group; - snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_PEER_GROUP_XPATH, - argv[idx_word]->arg, ""); + 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; + } - nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL); + 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; + } - return nb_cli_apply_changes(vty, base_xpath); + return CMD_SUCCESS; } DEFUN (no_neighbor, @@ -4787,243 +4733,245 @@ DEFUN (no_neighbor, "Internal BGP peer\n" "External BGP peer\n") { + VTY_DECLVAR_CONTEXT(bgp, bgp); int idx_peer = 2; - char base_xpath[XPATH_MAXLEN]; - char num_xpath[XPATH_MAXLEN]; - char unnbr_xpath[XPATH_MAXLEN]; - char prgrp_xpath[XPATH_MAXLEN]; + int ret; union sockunion su; + struct peer_group *group; + struct peer *peer; + struct peer *other; - 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_existsf(vty->candidate_config->dnode, "%s%s", - VTY_CURR_XPATH, num_xpath + 1)) { - strlcpy(base_xpath, num_xpath, sizeof(base_xpath)); + 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; } - } else { - 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_existsf(vty->candidate_config->dnode, "%s%s", - VTY_CURR_XPATH, unnbr_xpath + 1)) { - strlcpy(base_xpath, unnbr_xpath, sizeof(base_xpath)); - } else if (yang_dnode_existsf(vty->candidate_config->dnode, - "%s%s", VTY_CURR_XPATH, - prgrp_xpath + 1)) { - strlcpy(base_xpath, prgrp_xpath, sizeof(base_xpath)); + + group = peer_group_lookup(bgp, argv[idx_peer]->arg); + if (group) { + peer_group_notify_unconfig(group); + peer_group_delete(group); } else { - vty_out(vty, - "%% Create the peer-group or interface first\n"); + vty_out(vty, "%% Create the peer-group first\n"); return CMD_WARNING_CONFIG_FAILED; } - } - - nb_cli_enqueue_change(vty, base_xpath, NB_OP_DESTROY, NULL); + } 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; + } - /* - * Need to commit any pending so this command doesn't merge with a - * create into a modify, which BGP can't handle - */ - return nb_cli_apply_changes_clear_pending(vty, NULL); -} - -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") -{ - int idx_word = 2; - char base_xpath[XPATH_MAXLEN]; + other = peer->doppelganger; - snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_NEIGHBOR_UNNUM_XPATH, - argv[idx_word]->arg, ""); + if (CHECK_FLAG(peer->flags, PEER_FLAG_CAPABILITY_ENHE)) + bgp_zebra_terminate_radv(peer->bgp, peer); - nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); + peer_notify_unconfig(peer); + peer_delete(peer); + if (other && other->status != Deleted) { + peer_notify_unconfig(other); + peer_delete(other); + } + } + } - /* - * Need to commit any pending so this command doesn't merge with a - * create into a modify, which BGP can't handle - */ - return nb_cli_apply_changes_clear_pending(vty, base_xpath); + return CMD_SUCCESS; } -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") +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") { - char base_xpath[XPATH_MAXLEN]; + VTY_DECLVAR_CONTEXT(bgp, bgp); int idx_word = 2; + struct peer *peer; - snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_PEER_GROUP_XPATH, - argv[idx_word]->arg, ""); - - nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL); - - /* - * Need to commit any pending so this command doesn't merge with a - * create into a modify, which BGP can't handle - */ - return nb_cli_apply_changes_clear_pending(vty, base_xpath); + /* 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; } -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") +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") { - int idx_peer = 2; - char base_xpath[XPATH_MAXLEN]; - char unnbr_xpath[XPATH_MAXLEN]; - char prgrp_xpath[XPATH_MAXLEN]; - - 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, ""); + VTY_DECLVAR_CONTEXT(bgp, bgp); + int idx_word = 2; + struct peer_group *group; - if (yang_dnode_existsf(vty->candidate_config->dnode, "%s%s", - VTY_CURR_XPATH, unnbr_xpath + 1)) { - strlcpy(base_xpath, unnbr_xpath, sizeof(base_xpath)); - } else if (yang_dnode_existsf(vty->candidate_config->dnode, "%s%s", - VTY_CURR_XPATH, prgrp_xpath + 1)) { - strlcpy(base_xpath, prgrp_xpath, sizeof(base_xpath)); + 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 or interface first\n"); + vty_out(vty, "%% Create the peer-group first\n"); return CMD_WARNING_CONFIG_FAILED; } + return CMD_SUCCESS; +} - strlcat(base_xpath, "/neighbor-remote-as/remote-as-type", - sizeof(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") +{ + VTY_DECLVAR_CONTEXT(bgp, bgp); + int idx_word = 2; + struct peer_group *group; + struct peer *peer; - nb_cli_enqueue_change(vty, base_xpath, NB_OP_DESTROY, NULL); + /* 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; + } - /* - * Need to commit any pending so this command doesn't merge with a - * create into a modify, which BGP can't handle - */ - return nb_cli_apply_changes_clear_pending(vty, NULL); + group = peer_group_lookup(bgp, argv[idx_word]->arg); + if (group) + peer_group_remote_as_delete(group); + else { + vty_out(vty, "%% Create the peer-group or interface first\n"); + return CMD_WARNING_CONFIG_FAILED; + } + return CMD_SUCCESS; } -DEFUN_YANG(neighbor_local_as, - neighbor_local_as_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> local-as (1-4294967295)", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Specify a local-as number\n" - "AS number used as local AS\n") +DEFUN (neighbor_local_as, + neighbor_local_as_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; + int ret; + as_t as; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./local-as/local-as", NB_OP_MODIFY, - argv[idx_number]->arg); - - return nb_cli_apply_changes(vty, base_xpath); + as = strtoul(argv[idx_number]->arg, NULL, 10); + ret = peer_local_as_set(peer, as, 0, 0); + return bgp_vty_return(vty, ret); } -DEFUN_YANG( - neighbor_local_as_no_prepend, neighbor_local_as_no_prepend_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> 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 (neighbor_local_as_no_prepend, + neighbor_local_as_no_prepend_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; + int ret; + as_t as; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - 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); + as = strtoul(argv[idx_number]->arg, NULL, 10); + ret = peer_local_as_set(peer, as, 1, 0); + return bgp_vty_return(vty, ret); } -DEFUN_YANG( - neighbor_local_as_no_prepend_replace_as, - neighbor_local_as_no_prepend_replace_as_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> 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 (neighbor_local_as_no_prepend_replace_as, + neighbor_local_as_no_prepend_replace_as_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; + int ret; + as_t as; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - 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/replace-as", NB_OP_MODIFY, - "true"); - - return nb_cli_apply_changes(vty, base_xpath); + as = strtoul(argv[idx_number]->arg, NULL, 10); + ret = peer_local_as_set(peer, as, 1, 1); + return bgp_vty_return(vty, ret); } -DEFUN_YANG(no_neighbor_local_as, - no_neighbor_local_as_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> 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 (no_neighbor_local_as, + no_neighbor_local_as_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; + int ret; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - 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/replace-as", NB_OP_MODIFY, - "false"); - - return nb_cli_apply_changes(vty, base_xpath); + ret = peer_local_as_unset(peer); + return bgp_vty_return(vty, ret); } @@ -5066,79 +5014,65 @@ DEFUN (no_neighbor_solo, return bgp_vty_return(vty, ret); } -DEFUN_YANG(neighbor_password, - neighbor_password_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> password LINE", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Set a password\n" - "The password\n") +DEFUN (neighbor_password, + neighbor_password_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> password LINE", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Set a password\n" + "The password\n") { int idx_peer = 1; int idx_line = 3; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; + int ret; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./password", NB_OP_MODIFY, - argv[idx_line]->arg); - - return nb_cli_apply_changes(vty, base_xpath); + ret = peer_password_set(peer, argv[idx_line]->arg); + return bgp_vty_return(vty, ret); } -DEFUN_YANG(no_neighbor_password, - no_neighbor_password_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> password [LINE]", - NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Set a password\n" - "The password\n") +DEFUN (no_neighbor_password, + no_neighbor_password_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> password [LINE]", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Set a password\n" + "The password\n") { int idx_peer = 2; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; + int ret; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./password", NB_OP_DESTROY, NULL); - - return nb_cli_apply_changes(vty, base_xpath); + ret = peer_password_unset(peer); + return bgp_vty_return(vty, ret); } -DEFUN_YANG(neighbor_activate, - neighbor_activate_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> activate", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Enable the Address Family for this Neighbor\n") +DEFUN (neighbor_activate, + neighbor_activate_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> activate", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Enable the Address Family for this Neighbor\n") { int idx_peer = 1; - 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); - - snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, - yang_afi_safi_value2identity(afi, safi)); + int ret; + struct peer *peer; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, nbr_xpath, - sizeof(nbr_xpath), af_xpath) - < 0) + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - 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); + ret = peer_activate(peer, bgp_node_afi(vty), bgp_node_safi(vty)); + return bgp_vty_return(vty, ret); } ALIAS_HIDDEN(neighbor_activate, neighbor_activate_hidden_cmd, @@ -5146,30 +5080,25 @@ ALIAS_HIDDEN(neighbor_activate, neighbor_activate_hidden_cmd, NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Enable the Address Family for this Neighbor\n") -DEFUN_YANG(no_neighbor_activate, - no_neighbor_activate_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> activate", - NO_STR NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Enable the Address Family for this Neighbor\n") +DEFUN (no_neighbor_activate, + no_neighbor_activate_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> activate", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Enable the Address Family for this Neighbor\n") { int idx_peer = 2; - char base_xpath[XPATH_MAXLEN]; - char af_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)); + int ret; + struct peer *peer; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), af_xpath) - < 0) + /* Lookup peer. */ + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./enabled", NB_OP_MODIFY, "false"); - - return nb_cli_apply_changes(vty, base_xpath); + ret = peer_deactivate(peer, bgp_node_afi(vty), bgp_node_safi(vty)); + return bgp_vty_return(vty, ret); } ALIAS_HIDDEN(no_neighbor_activate, no_neighbor_activate_hidden_cmd, @@ -5177,27 +5106,63 @@ 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_YANG (neighbor_set_peer_group, - neighbor_set_peer_group_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> peer-group PGNAME", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Member of the peer-group\n" - "Peer-group name\n") +DEFUN (neighbor_set_peer_group, + neighbor_set_peer_group_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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; - char base_xpath[XPATH_MAXLEN]; + int ret; + as_t as; + union sockunion su; + struct peer *peer; + struct peer_group *group; + + 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; + } - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + /* 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"); return CMD_WARNING_CONFIG_FAILED; + } - nb_cli_enqueue_change(vty, "./peer-group", NB_OP_MODIFY, - argv[idx_word]->arg); + ret = peer_group_bind(bgp, &su, peer, group, &as); - return nb_cli_apply_changes(vty, base_xpath); + 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); } ALIAS_HIDDEN(neighbor_set_peer_group, neighbor_set_peer_group_hidden_cmd, @@ -5206,30 +5171,39 @@ ALIAS_HIDDEN(neighbor_set_peer_group, neighbor_set_peer_group_hidden_cmd, "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 <A.B.C.D|X:X::X:X|WORD> peer-group PGNAME", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Member of the peer-group\n" - "Peer-group name\n") +DEFUN (no_neighbor_set_peer_group, + no_neighbor_set_peer_group_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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; - char base_xpath[XPATH_MAXLEN]; + int idx_word = 4; + int ret; + struct peer *peer; + struct peer_group *group; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) + 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); - /* - * Need to commit any pending so this command doesn't merge with a - * create into a modify, which BGP can't handle - */ - return nb_cli_apply_changes_clear_pending(vty, base_xpath); + peer_notify_unconfig(peer); + ret = peer_delete(peer); + + return bgp_vty_return(vty, ret); } ALIAS_HIDDEN(no_neighbor_set_peer_group, no_neighbor_set_peer_group_hidden_cmd, @@ -5281,105 +5255,55 @@ static int peer_flag_unset_vty(struct vty *vty, const char *ip_str, return peer_flag_modify_vty(vty, ip_str, flag, 0); } -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 ret; - - /* - * If 'neighbor <interface>', 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); -} - /* neighbor passive. */ -DEFUN_YANG(neighbor_passive, - neighbor_passive_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> passive", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Don't send open messages to this neighbor\n") +DEFUN (neighbor_passive, + neighbor_passive_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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); + return peer_flag_set_vty(vty, argv[idx_peer]->arg, PEER_FLAG_PASSIVE); } -DEFUN_YANG(no_neighbor_passive, - no_neighbor_passive_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> passive", - NO_STR NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Don't send open messages to this neighbor\n") +DEFUN (no_neighbor_passive, + no_neighbor_passive_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> passive", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Don't send open messages to this neighbor\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, "./passive-mode", NB_OP_MODIFY, "false"); - - return nb_cli_apply_changes(vty, base_xpath); + return peer_flag_unset_vty(vty, argv[idx_peer]->arg, PEER_FLAG_PASSIVE); } /* neighbor shutdown. */ -DEFUN_YANG(neighbor_shutdown_msg, - neighbor_shutdown_msg_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> 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 (neighbor_shutdown_msg, + neighbor_shutdown_msg_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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); - nb_cli_enqueue_change(vty, "./admin-shutdown/message", - NB_OP_MODIFY, message); + peer_tx_shutdown_message_set(peer, message); + XFREE(MTYPE_TMP, message); } - nb_cli_enqueue_change(vty, "./admin-shutdown/enable", NB_OP_MODIFY, - "true"); - - return nb_cli_apply_changes(vty, base_xpath); + return peer_flag_set_vty(vty, argv[idx_peer]->arg, PEER_FLAG_SHUTDOWN); } ALIAS(neighbor_shutdown_msg, neighbor_shutdown_cmd, @@ -5387,27 +5311,20 @@ ALIAS(neighbor_shutdown_msg, neighbor_shutdown_cmd, NEIGHBOR_STR NEIGHBOR_ADDR_STR2 "Administratively shut down this neighbor\n") -DEFUN_YANG(no_neighbor_shutdown_msg, - no_neighbor_shutdown_msg_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> 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 (no_neighbor_shutdown_msg, + no_neighbor_shutdown_msg_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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]; - - 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); + return peer_flag_unset_vty(vty, argv[idx_peer]->arg, + PEER_FLAG_SHUTDOWN); } ALIAS(no_neighbor_shutdown_msg, no_neighbor_shutdown_cmd, @@ -5474,49 +5391,31 @@ DEFUN(no_neighbor_shutdown_rtt, } /* neighbor capability dynamic. */ -DEFUN_YANG (neighbor_capability_dynamic, - neighbor_capability_dynamic_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> capability dynamic", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Advertise capability to the peer\n" - "Advertise dynamic capability to this neighbor\n") +DEFUN (neighbor_capability_dynamic, + neighbor_capability_dynamic_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> capability dynamic", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Advertise capability to the peer\n" + "Advertise dynamic capability 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, "./capability-options/dynamic-capability", - NB_OP_MODIFY, "true"); - - return nb_cli_apply_changes(vty, base_xpath); + return peer_flag_set_vty(vty, argv[idx_peer]->arg, + PEER_FLAG_DYNAMIC_CAPABILITY); } -DEFUN_YANG (no_neighbor_capability_dynamic, - no_neighbor_capability_dynamic_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> capability dynamic", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Advertise capability to the peer\n" - "Advertise dynamic capability to this neighbor\n") +DEFUN (no_neighbor_capability_dynamic, + no_neighbor_capability_dynamic_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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); + return peer_flag_unset_vty(vty, argv[idx_peer]->arg, + PEER_FLAG_DYNAMIC_CAPABILITY); } /* neighbor dont-capability-negotiate */ @@ -5546,65 +5445,31 @@ DEFUN (no_neighbor_dont_capability_negotiate, } /* neighbor capability extended next hop encoding */ -DEFUN_YANG (neighbor_capability_enhe, - neighbor_capability_enhe_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> capability extended-nexthop", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Advertise capability to the peer\n" - "Advertise extended next-hop capability to the peer\n") +DEFUN (neighbor_capability_enhe, + neighbor_capability_enhe_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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); + return peer_flag_set_vty(vty, argv[idx_peer]->arg, + PEER_FLAG_CAPABILITY_ENHE); } -DEFUN_YANG (no_neighbor_capability_enhe, - no_neighbor_capability_enhe_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> 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 (no_neighbor_capability_enhe, + no_neighbor_capability_enhe_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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); + return peer_flag_unset_vty(vty, argv[idx_peer]->arg, + PEER_FLAG_CAPABILITY_ENHE); } static int peer_af_flag_modify_vty(struct vty *vty, const char *peer_str, @@ -5743,36 +5608,16 @@ ALIAS_HIDDEN( "Capability to SEND the ORF to this neighbor\n") /* neighbor next-hop-self. */ -DEFUN_YANG (neighbor_nexthop_self, - neighbor_nexthop_self_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> next-hop-self", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Disable the next hop calculation for this neighbor\n") +DEFUN (neighbor_nexthop_self, + neighbor_nexthop_self_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> next-hop-self", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Disable the next hop calculation for this neighbor\n") { int idx_peer = 1; - 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); + return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), + bgp_node_safi(vty), PEER_FLAG_NEXTHOP_SELF); } ALIAS_HIDDEN(neighbor_nexthop_self, neighbor_nexthop_self_hidden_cmd, @@ -5781,37 +5626,18 @@ ALIAS_HIDDEN(neighbor_nexthop_self, neighbor_nexthop_self_hidden_cmd, "Disable the next hop calculation for this neighbor\n") /* neighbor next-hop-self. */ -DEFUN_YANG(neighbor_nexthop_self_force, - neighbor_nexthop_self_force_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> 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 (neighbor_nexthop_self_force, + neighbor_nexthop_self_force_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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); + return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), + bgp_node_safi(vty), + PEER_FLAG_FORCE_NEXTHOP_SELF); } ALIAS_HIDDEN(neighbor_nexthop_self_force, @@ -5828,36 +5654,18 @@ 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_YANG (no_neighbor_nexthop_self, - no_neighbor_nexthop_self_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> next-hop-self", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Disable the next hop calculation for this neighbor\n") +DEFUN (no_neighbor_nexthop_self, + no_neighbor_nexthop_self_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> next-hop-self", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Disable the next hop calculation for this neighbor\n") { int idx_peer = 2; - 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); + return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, + bgp_node_afi(vty), bgp_node_safi(vty), + PEER_FLAG_NEXTHOP_SELF); } ALIAS_HIDDEN(no_neighbor_nexthop_self, no_neighbor_nexthop_self_hidden_cmd, @@ -5865,38 +5673,19 @@ 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_YANG (no_neighbor_nexthop_self_force, - no_neighbor_nexthop_self_force_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> 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 (no_neighbor_nexthop_self_force, + no_neighbor_nexthop_self_force_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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); + return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, + bgp_node_afi(vty), bgp_node_safi(vty), + PEER_FLAG_FORCE_NEXTHOP_SELF); } ALIAS_HIDDEN(no_neighbor_nexthop_self_force, @@ -5914,35 +5703,16 @@ ALIAS_HIDDEN(no_neighbor_nexthop_self_force, "Set the next hop to self for reflected routes\n") /* neighbor as-override */ -DEFUN_YANG (neighbor_as_override, - neighbor_as_override_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> as-override", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Override ASNs in outbound updates if aspath equals remote-as\n") +DEFUN (neighbor_as_override, + neighbor_as_override_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> as-override", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Override ASNs in outbound updates if aspath equals remote-as\n") { int idx_peer = 1; - 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); + return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), + bgp_node_safi(vty), PEER_FLAG_AS_OVERRIDE); } ALIAS_HIDDEN(neighbor_as_override, neighbor_as_override_hidden_cmd, @@ -5950,36 +5720,18 @@ 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_YANG (no_neighbor_as_override, - no_neighbor_as_override_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> as-override", - NO_STR - 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 <A.B.C.D|X:X::X:X|WORD> as-override", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Override ASNs in outbound updates if aspath equals remote-as\n") { int idx_peer = 2; - 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); + return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, + bgp_node_afi(vty), bgp_node_safi(vty), + PEER_FLAG_AS_OVERRIDE); } ALIAS_HIDDEN(no_neighbor_as_override, no_neighbor_as_override_hidden_cmd, @@ -5988,35 +5740,17 @@ 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_YANG (neighbor_remove_private_as, - neighbor_remove_private_as_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> remove-private-AS", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Remove private ASNs in outbound updates\n") +DEFUN (neighbor_remove_private_as, + neighbor_remove_private_as_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> remove-private-AS", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Remove private ASNs in outbound updates\n") { int idx_peer = 1; - 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); + return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), + bgp_node_safi(vty), + PEER_FLAG_REMOVE_PRIVATE_AS); } ALIAS_HIDDEN(neighbor_remove_private_as, neighbor_remove_private_as_hidden_cmd, @@ -6024,37 +5758,18 @@ 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_YANG (neighbor_remove_private_as_all, - neighbor_remove_private_as_all_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> remove-private-AS all", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Remove private ASNs in outbound updates\n" - "Apply to all AS numbers\n") +DEFUN (neighbor_remove_private_as_all, + neighbor_remove_private_as_all_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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); + 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); } ALIAS_HIDDEN(neighbor_remove_private_as_all, @@ -6064,37 +5779,18 @@ ALIAS_HIDDEN(neighbor_remove_private_as_all, "Remove private ASNs in outbound updates\n" "Apply to all AS numbers") -DEFUN_YANG (neighbor_remove_private_as_replace_as, - neighbor_remove_private_as_replace_as_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> 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 (neighbor_remove_private_as_replace_as, + neighbor_remove_private_as_replace_as_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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); + 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); } ALIAS_HIDDEN(neighbor_remove_private_as_replace_as, @@ -6104,38 +5800,19 @@ 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_YANG (neighbor_remove_private_as_all_replace_as, - neighbor_remove_private_as_all_replace_as_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> 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 (neighbor_remove_private_as_all_replace_as, + neighbor_remove_private_as_all_replace_as_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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); + 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); } ALIAS_HIDDEN( @@ -6147,36 +5824,18 @@ ALIAS_HIDDEN( "Apply to all AS numbers\n" "Replace private ASNs with our ASN in outbound updates\n") -DEFUN_YANG (no_neighbor_remove_private_as, - no_neighbor_remove_private_as_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> remove-private-AS", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Remove private ASNs in outbound updates\n") +DEFUN (no_neighbor_remove_private_as, + no_neighbor_remove_private_as_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> remove-private-AS", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Remove private ASNs in outbound updates\n") { int idx_peer = 2; - 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); + return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, + bgp_node_afi(vty), bgp_node_safi(vty), + PEER_FLAG_REMOVE_PRIVATE_AS); } ALIAS_HIDDEN(no_neighbor_remove_private_as, @@ -6185,38 +5844,19 @@ ALIAS_HIDDEN(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_all, - no_neighbor_remove_private_as_all_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> 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 (no_neighbor_remove_private_as_all, + no_neighbor_remove_private_as_all_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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); + 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); } ALIAS_HIDDEN(no_neighbor_remove_private_as_all, @@ -6226,38 +5866,19 @@ ALIAS_HIDDEN(no_neighbor_remove_private_as_all, "Remove private ASNs in outbound updates\n" "Apply to all AS numbers\n") -DEFUN_YANG (no_neighbor_remove_private_as_replace_as, - no_neighbor_remove_private_as_replace_as_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> 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 (no_neighbor_remove_private_as_replace_as, + no_neighbor_remove_private_as_replace_as_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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); + 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); } ALIAS_HIDDEN(no_neighbor_remove_private_as_replace_as, @@ -6267,39 +5888,20 @@ 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_YANG (no_neighbor_remove_private_as_all_replace_as, - no_neighbor_remove_private_as_all_replace_as_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> 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 (no_neighbor_remove_private_as_all_replace_as, + no_neighbor_remove_private_as_all_replace_as_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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); + 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); } ALIAS_HIDDEN( @@ -6313,12 +5915,12 @@ ALIAS_HIDDEN( /* neighbor send-community. */ -DEFUN_YANG (neighbor_send_community, - neighbor_send_community_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> send-community", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Send Community attribute to this neighbor\n") +DEFUN (neighbor_send_community, + neighbor_send_community_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> send-community", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Send Community attribute to this neighbor\n") { int idx_peer = 1; @@ -6332,13 +5934,13 @@ ALIAS_HIDDEN(neighbor_send_community, neighbor_send_community_hidden_cmd, 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 <A.B.C.D|X:X::X:X|WORD> send-community", - NO_STR - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Send Community attribute to this neighbor\n") +DEFUN (no_neighbor_send_community, + no_neighbor_send_community_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> send-community", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Send Community attribute to this neighbor\n") { int idx_peer = 2; @@ -6353,95 +5955,52 @@ ALIAS_HIDDEN(no_neighbor_send_community, no_neighbor_send_community_hidden_cmd, "Send Community attribute to this neighbor\n") /* neighbor send-community extended. */ -DEFUN_YANG (neighbor_send_community_type, - neighbor_send_community_type_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> send-community <both|all|extended|standard|large>", - 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 (neighbor_send_community_type, + neighbor_send_community_type_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> send-community <both|all|extended|standard|large>", + 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; - 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]; + struct peer *peer; 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, peer_str, base_xpath, - sizeof(base_xpath), af_xpath) - < 0) + peer = peer_and_group_lookup_vty(vty, peer_str); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - if (strmatch(type, "standard")) { - 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"); - } - - 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, "standard")) + return peer_af_flag_set_vty(vty, peer_str, afi, safi, + PEER_FLAG_SEND_COMMUNITY); - if (strmatch(type, "large")) { - snprintf(lrg_xpath, sizeof(lrg_xpath), - "./%s/send-community/send-large-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, lrg_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, "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, "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"); - } - - 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 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); } - - return nb_cli_apply_changes(vty, base_xpath); + 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); } ALIAS_HIDDEN( @@ -6455,96 +6014,55 @@ ALIAS_HIDDEN( "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 <A.B.C.D|X:X::X:X|WORD> send-community <both|all|extended|standard|large>", - 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 (no_neighbor_send_community_type, + no_neighbor_send_community_type_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> send-community <both|all|extended|standard|large>", + 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; - 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]; + struct peer *peer; 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, peer_str, base_xpath, - sizeof(base_xpath), af_xpath) - < 0) + peer = peer_and_group_lookup_vty(vty, peer_str); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - if (strmatch(type, "standard")) { - 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"); - } - - 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, "standard")) + return peer_af_flag_unset_vty(vty, peer_str, afi, safi, + PEER_FLAG_SEND_COMMUNITY); - if (strmatch(type, "large")) { - snprintf(lrg_xpath, sizeof(lrg_xpath), - "./%s/send-community/send-large-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); - nb_cli_enqueue_change(vty, lrg_xpath, NB_OP_MODIFY, "false"); - } + if (strmatch(type, "large")) + return peer_af_flag_unset_vty(vty, peer_str, afi, safi, + PEER_FLAG_SEND_LARGE_COMMUNITY); 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 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); } - return nb_cli_apply_changes(vty, base_xpath); + 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); } ALIAS_HIDDEN( @@ -6560,35 +6078,18 @@ ALIAS_HIDDEN( "Send Large Community attributes\n") /* neighbor soft-reconfig. */ -DEFUN_YANG (neighbor_soft_reconfiguration, - neighbor_soft_reconfiguration_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> soft-reconfiguration inbound", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Per neighbor soft reconfiguration\n" - "Allow inbound soft reconfiguration for this neighbor\n") +DEFUN (neighbor_soft_reconfiguration, + neighbor_soft_reconfiguration_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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); + return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), + bgp_node_safi(vty), + PEER_FLAG_SOFT_RECONFIG); } ALIAS_HIDDEN(neighbor_soft_reconfiguration, @@ -6598,34 +6099,19 @@ ALIAS_HIDDEN(neighbor_soft_reconfiguration, "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 <A.B.C.D|X:X::X:X|WORD> soft-reconfiguration inbound", - NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "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 <A.B.C.D|X:X::X:X|WORD> 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; - 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); + return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, + bgp_node_afi(vty), bgp_node_safi(vty), + PEER_FLAG_SOFT_RECONFIG); } ALIAS_HIDDEN(no_neighbor_soft_reconfiguration, @@ -6635,35 +6121,24 @@ ALIAS_HIDDEN(no_neighbor_soft_reconfiguration, "Per neighbor soft reconfiguration\n" "Allow inbound soft reconfiguration for this neighbor\n") -DEFUN_YANG (neighbor_route_reflector_client, - neighbor_route_reflector_client_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> route-reflector-client", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Configure a neighbor as Route Reflector client\n") +DEFUN (neighbor_route_reflector_client, + neighbor_route_reflector_client_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> route-reflector-client", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Configure a neighbor as Route Reflector client\n") { int idx_peer = 1; - 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); + struct peer *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) + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) 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, "true"); - - return nb_cli_apply_changes(vty, base_xpath); + return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), + bgp_node_safi(vty), + PEER_FLAG_REFLECTOR_CLIENT); } ALIAS_HIDDEN(neighbor_route_reflector_client, @@ -6672,36 +6147,18 @@ ALIAS_HIDDEN(neighbor_route_reflector_client, 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 <A.B.C.D|X:X::X:X|WORD> route-reflector-client", - NO_STR - 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 <A.B.C.D|X:X::X:X|WORD> route-reflector-client", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Configure a neighbor as Route Reflector client\n") { int idx_peer = 2; - 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); + return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, + bgp_node_afi(vty), bgp_node_safi(vty), + PEER_FLAG_REFLECTOR_CLIENT); } ALIAS_HIDDEN(no_neighbor_route_reflector_client, @@ -6711,35 +6168,22 @@ ALIAS_HIDDEN(no_neighbor_route_reflector_client, "Configure a neighbor as Route Reflector client\n") /* neighbor route-server-client. */ -DEFUN_YANG (neighbor_route_server_client, - neighbor_route_server_client_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> route-server-client", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Configure a neighbor as Route Server client\n") +DEFUN (neighbor_route_server_client, + neighbor_route_server_client_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> route-server-client", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Configure a neighbor as Route Server client\n") { int idx_peer = 1; - 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)); + struct peer *peer; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), af_xpath) - < 0) + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) 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, "true"); - - return nb_cli_apply_changes(vty, base_xpath); + return peer_af_flag_set_vty(vty, argv[idx_peer]->arg, bgp_node_afi(vty), + bgp_node_safi(vty), + PEER_FLAG_RSERVER_CLIENT); } ALIAS_HIDDEN(neighbor_route_server_client, @@ -6748,36 +6192,18 @@ ALIAS_HIDDEN(neighbor_route_server_client, 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 <A.B.C.D|X:X::X:X|WORD> route-server-client", - NO_STR - 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 <A.B.C.D|X:X::X:X|WORD> route-server-client", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Configure a neighbor as Route Server client\n") { int idx_peer = 2; - 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); + return peer_af_flag_unset_vty(vty, argv[idx_peer]->arg, + bgp_node_afi(vty), bgp_node_safi(vty), + PEER_FLAG_RSERVER_CLIENT); } ALIAS_HIDDEN(no_neighbor_route_server_client, @@ -6815,35 +6241,28 @@ DEFUN (no_neighbor_nexthop_local_unchanged, PEER_FLAG_NEXTHOP_LOCAL_UNCHANGED); } -DEFUN_YANG (neighbor_attr_unchanged, - neighbor_attr_unchanged_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> 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 (neighbor_attr_unchanged, + neighbor_attr_unchanged_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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); - 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]; - - snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, - yang_afi_safi_value2identity(afi, safi)); + int ret = 0; - if (peer_and_group_lookup_nb(vty, peer_str, base_xpath, - sizeof(base_xpath), af_xpath) - < 0) + peer = peer_and_group_lookup_vty(vty, peer_str); + if (!peer) return CMD_WARNING_CONFIG_FAILED; if (argv_find(argv, argc, "as-path", &idx)) @@ -6857,45 +6276,52 @@ DEFUN_YANG (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) { - 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"); + 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); } else { - 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) - nb_cli_enqueue_change(vty, nxthop_xpath, NB_OP_MODIFY, - "false"); - else - nb_cli_enqueue_change(vty, nxthop_xpath, NB_OP_MODIFY, - "true"); + 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 (!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 (!med) - nb_cli_enqueue_change(vty, med_xpath, NB_OP_MODIFY, - "false"); - else - nb_cli_enqueue_change(vty, med_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); } - return nb_cli_apply_changes(vty, base_xpath); + return ret; } ALIAS_HIDDEN( @@ -6907,36 +6333,29 @@ ALIAS_HIDDEN( "Nexthop attribute\n" "Med attribute\n") -DEFUN_YANG (no_neighbor_attr_unchanged, - no_neighbor_attr_unchanged_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> 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 (no_neighbor_attr_unchanged, + no_neighbor_attr_unchanged_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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); - 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]; - - snprintf(af_xpath, sizeof(af_xpath), FRR_BGP_AF_XPATH, - yang_afi_safi_value2identity(afi, safi)); + int ret = 0; - if (peer_and_group_lookup_nb(vty, peer_str, base_xpath, - sizeof(base_xpath), af_xpath) - < 0) + peer = peer_and_group_lookup_vty(vty, peer_str); + if (!peer) return CMD_WARNING_CONFIG_FAILED; if (argv_find(argv, argc, "as-path", &idx)) @@ -6950,33 +6369,27 @@ DEFUN_YANG (no_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) { - 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 && !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); if (aspath) - nb_cli_enqueue_change(vty, as_xpath, NB_OP_MODIFY, "false"); + ret |= peer_af_flag_unset_vty(vty, peer_str, afi, safi, + PEER_FLAG_AS_PATH_UNCHANGED); if (nexthop) - nb_cli_enqueue_change(vty, nxthop_xpath, NB_OP_MODIFY, "false"); + ret |= peer_af_flag_unset_vty(vty, peer_str, afi, safi, + PEER_FLAG_NEXTHOP_UNCHANGED); if (med) - nb_cli_enqueue_change(vty, med_xpath, NB_OP_MODIFY, "false"); + ret |= peer_af_flag_unset_vty(vty, peer_str, afi, safi, + PEER_FLAG_MED_UNCHANGED); - return nb_cli_apply_changes(vty, base_xpath); + return ret; } ALIAS_HIDDEN( @@ -6988,257 +6401,181 @@ ALIAS_HIDDEN( "Nexthop attribute\n" "Med attribute\n") -/* neighbor ebgp-multihop. */ -DEFUN_YANG (neighbor_ebgp_multihop, - neighbor_ebgp_multihop_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> ebgp-multihop", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Allow EBGP neighbors not on directly connected networks\n") +/* EBGP multihop configuration. */ +static int peer_ebgp_multihop_set_vty(struct vty *vty, const char *ip_str, + const char *ttl_str) { - int idx_peer = 1; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; + unsigned int ttl; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, ip_str); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./ebgp-multihop/enabled", NB_OP_MODIFY, - "true"); + if (peer->conf_if) + return bgp_vty_return(vty, BGP_ERR_INVALID_FOR_DIRECT_PEER); - return nb_cli_apply_changes(vty, base_xpath); + if (!ttl_str) + ttl = MAXTTL; + else + ttl = strtoul(ttl_str, NULL, 10); + + return bgp_vty_return(vty, peer_ebgp_multihop_set(peer, ttl)); } -DEFUN_YANG (neighbor_ebgp_multihop_ttl, - neighbor_ebgp_multihop_ttl_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> ebgp-multihop (1-255)", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Allow EBGP neighbors not on directly connected networks\n" - "maximum hop count\n") +static int peer_ebgp_multihop_unset_vty(struct vty *vty, const char *ip_str) { - int idx_peer = 1; - int idx_number = 3; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, ip_str); + if (!peer) 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); + return bgp_vty_return(vty, peer_ebgp_multihop_unset(peer)); } -DEFUN_YANG (no_neighbor_ebgp_multihop, - no_neighbor_ebgp_multihop_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> ebgp-multihop [(1-255)]", - NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Allow EBGP neighbors not on directly connected networks\n" - "maximum hop count\n") +/* neighbor ebgp-multihop. */ +DEFUN (neighbor_ebgp_multihop, + neighbor_ebgp_multihop_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> ebgp-multihop", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Allow EBGP neighbors not on directly connected networks\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; + int idx_peer = 1; + return peer_ebgp_multihop_set_vty(vty, argv[idx_peer]->arg, NULL); +} - 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"); +DEFUN (neighbor_ebgp_multihop_ttl, + neighbor_ebgp_multihop_ttl_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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); +} - return nb_cli_apply_changes(vty, base_xpath); +DEFUN (no_neighbor_ebgp_multihop, + no_neighbor_ebgp_multihop_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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); } /* disable-connected-check */ -DEFUN_YANG (neighbor_disable_connected_check, - neighbor_disable_connected_check_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> <disable-connected-check|enforce-multihop>", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "one-hop away EBGP peer using loopback address\n" - "Enforce EBGP neighbors perform multihop\n") +DEFUN (neighbor_disable_connected_check, + neighbor_disable_connected_check_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> <disable-connected-check|enforce-multihop>", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "one-hop away EBGP peer using loopback address\n" + "Enforce EBGP neighbors perform multihop\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, "./ebgp-multihop/disable-connected-check", - NB_OP_MODIFY, "true"); - - return nb_cli_apply_changes(vty, base_xpath); + return peer_flag_set_vty(vty, argv[idx_peer]->arg, + PEER_FLAG_DISABLE_CONNECTED_CHECK); } -DEFUN_YANG (no_neighbor_disable_connected_check, - no_neighbor_disable_connected_check_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> <disable-connected-check|enforce-multihop>", - NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "one-hop away EBGP peer using loopback address\n" - "Enforce EBGP neighbors perform multihop\n") +DEFUN (no_neighbor_disable_connected_check, + no_neighbor_disable_connected_check_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> <disable-connected-check|enforce-multihop>", + 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; - 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); + return peer_flag_unset_vty(vty, argv[idx_peer]->arg, + PEER_FLAG_DISABLE_CONNECTED_CHECK); } /* enforce-first-as */ -DEFUN_YANG (neighbor_enforce_first_as, - neighbor_enforce_first_as_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> enforce-first-as", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Enforce the first AS for EBGP routes\n") +DEFUN (neighbor_enforce_first_as, + neighbor_enforce_first_as_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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]; - - 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); + return peer_flag_set_vty(vty, argv[idx_peer]->arg, + PEER_FLAG_ENFORCE_FIRST_AS); } -DEFUN_YANG (no_neighbor_enforce_first_as, - no_neighbor_enforce_first_as_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> enforce-first-as", - NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Enforce the first AS for EBGP routes\n") +DEFUN (no_neighbor_enforce_first_as, + no_neighbor_enforce_first_as_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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]; - - 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); + return peer_flag_unset_vty(vty, argv[idx_peer]->arg, + PEER_FLAG_ENFORCE_FIRST_AS); } -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]; - - if (str2sockunion(peer_str, &su) == 0) { - snprintf(num_xpath, sizeof(num_xpath), - "/neighbors/neighbor[remote-address='%s']", peer_str); - if (yang_dnode_existsf(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_existsf(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_existsf(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 <A.B.C.D|X:X::X:X|WORD> description LINE...", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Neighbor specific description\n" - "Up to 80 characters describing this neighbor\n") +DEFUN (neighbor_description, + neighbor_description_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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; - int ret; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; char *str; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) return CMD_WARNING_CONFIG_FAILED; str = argv_concat(argv, argc, idx_line); - nb_cli_enqueue_change(vty, "./description", NB_OP_MODIFY, str); - - ret = nb_cli_apply_changes(vty, base_xpath); + peer_description_set(peer, str); XFREE(MTYPE_TMP, str); - return ret; + return CMD_SUCCESS; } -DEFUN_YANG (no_neighbor_description, - no_neighbor_description_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> description", - NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Neighbor specific description\n") +DEFUN (no_neighbor_description, + no_neighbor_description_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> description", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Neighbor specific description\n") { int idx_peer = 2; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./description", NB_OP_DESTROY, NULL); + peer_description_unset(peer); - return nb_cli_apply_changes(vty, base_xpath); + return CMD_SUCCESS; } ALIAS(no_neighbor_description, no_neighbor_description_comment_cmd, @@ -7247,73 +6584,68 @@ 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_YANG (neighbor_update_source, - neighbor_update_source_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> update-source <A.B.C.D|X:X::X:X|WORD>", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Source of routing updates\n" - BGP_UPDATE_SOURCE_HELP_STR) +DEFUN (neighbor_update_source, + neighbor_update_source_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> update-source <A.B.C.D|X:X::X:X|WORD>", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Source of routing updates\n" + BGP_UPDATE_SOURCE_HELP_STR) { int idx_peer = 1; int idx_peer_2 = 3; - 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, + return peer_update_source_vty(vty, argv[idx_peer]->arg, 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_YANG (no_neighbor_update_source, - no_neighbor_update_source_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> update-source [<A.B.C.D|X:X::X:X|WORD>]", - NO_STR NEIGHBOR_STR - NEIGHBOR_ADDR_STR2 - "Source of routing updates\n" - BGP_UPDATE_SOURCE_HELP_STR) +DEFUN (no_neighbor_update_source, + no_neighbor_update_source_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> update-source [<A.B.C.D|X:X::X:X|WORD>]", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Source of routing updates\n" + BGP_UPDATE_SOURCE_HELP_STR) { int idx_peer = 2; - 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); + return peer_update_source_vty(vty, argv[idx_peer]->arg, NULL); } static int peer_default_originate_set_vty(struct vty *vty, const char *peer_str, @@ -7408,76 +6740,103 @@ ALIAS_HIDDEN( "route-map name\n") -/* Set specified peer's BGP port. */ -DEFUN_YANG (neighbor_port, - neighbor_port_cmd, - "neighbor <A.B.C.D|X:X::X:X> port (0-65535)", - NEIGHBOR_STR - NEIGHBOR_ADDR_STR - "Neighbor's BGP port\n" - "TCP port number\n") +/* Set neighbor's BGP port. */ +static int peer_port_vty(struct vty *vty, const char *ip_str, int afi, + const char *port_str) { - int idx_ip = 1; - int idx_number = 3; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; + uint16_t port; + struct servent *sp; - snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_NEIGHBOR_NUM_XPATH, - argv[idx_ip]->arg, ""); + peer = peer_lookup_vty(vty, ip_str); + if (!peer) + return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./local-port", NB_OP_MODIFY, - argv[idx_number]->arg); + if (!port_str) { + sp = getservbyname("bgp", "tcp"); + port = (sp == NULL) ? BGP_PORT_DEFAULT : ntohs(sp->s_port); + } else { + port = strtoul(port_str, NULL, 10); + } - return nb_cli_apply_changes(vty, base_xpath); + peer_port_set(peer, port); + + return CMD_SUCCESS; } -DEFUN_YANG (no_neighbor_port, - no_neighbor_port_cmd, - "no neighbor <A.B.C.D|X:X::X:X> port [(0-65535)]", - NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR - "Neighbor's BGP port\n" - "TCP port number\n") +/* Set specified peer's BGP port. */ +DEFUN (neighbor_port, + neighbor_port_cmd, + "neighbor <A.B.C.D|X:X::X:X> 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); +} + +DEFUN (no_neighbor_port, + no_neighbor_port_cmd, + "no neighbor <A.B.C.D|X:X::X:X> port [(0-65535)]", + NO_STR + NEIGHBOR_STR + NEIGHBOR_ADDR_STR + "Neighbor's BGP port\n" + "TCP port number\n") { int idx_ip = 2; - char base_xpath[XPATH_MAXLEN]; + return peer_port_vty(vty, argv[idx_ip]->arg, AFI_IP, NULL); +} - 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); +/* 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; - return nb_cli_apply_changes(vty, base_xpath); + 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); } -DEFUN_YANG (neighbor_weight, - neighbor_weight_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> weight (0-65535)", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Set default weight for routes from this neighbor\n" - "default weight\n") +static int peer_weight_unset_vty(struct vty *vty, const char *ip_str, afi_t afi, + safi_t safi) { - int idx_peer = 1; - int idx_number = 3; - 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)); + int ret; + struct peer *peer; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), af_xpath) - < 0) + peer = peer_and_group_lookup_vty(vty, ip_str); + if (!peer) 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); + ret = peer_weight_unset(peer, afi, safi); + return bgp_vty_return(vty, ret); +} - return nb_cli_apply_changes(vty, base_xpath); +DEFUN (neighbor_weight, + neighbor_weight_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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); } ALIAS_HIDDEN(neighbor_weight, neighbor_weight_hidden_cmd, @@ -7486,34 +6845,18 @@ ALIAS_HIDDEN(neighbor_weight, neighbor_weight_hidden_cmd, "Set default weight for routes from this neighbor\n" "default weight\n") -DEFUN_YANG (no_neighbor_weight, - no_neighbor_weight_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> weight [(0-65535)]", - NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Set default weight for routes from this neighbor\n" - "default weight\n") +DEFUN (no_neighbor_weight, + no_neighbor_weight_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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; - 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); + return peer_weight_unset_vty(vty, argv[idx_peer]->arg, + bgp_node_afi(vty), bgp_node_safi(vty)); } ALIAS_HIDDEN(no_neighbor_weight, no_neighbor_weight_hidden_cmd, @@ -7576,99 +6919,131 @@ DEFUN (no_neighbor_strict_capability, PEER_FLAG_STRICT_CAP_MATCH); } -DEFUN_YANG (neighbor_timers, - neighbor_timers_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> timers (0-65535) (0-65535)", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "BGP per neighbor timers\n" - "Keepalive interval\n" - "Holdtime\n") +static int peer_timers_set_vty(struct vty *vty, const char *ip_str, + const char *keep_str, const char *hold_str) { - int idx_peer = 1; - int idx_number = 3; - int idx_number_2 = 4; - char base_xpath[XPATH_MAXLEN]; + int ret; + struct peer *peer; + uint32_t keepalive; + uint32_t holdtime; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, ip_str); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./timers/keepalive", NB_OP_MODIFY, - argv[idx_number]->arg); + keepalive = strtoul(keep_str, NULL, 10); + holdtime = strtoul(hold_str, NULL, 10); - nb_cli_enqueue_change(vty, "./timers/hold-time", NB_OP_MODIFY, - argv[idx_number_2]->arg); + ret = peer_timers_set(peer, keepalive, holdtime); - return nb_cli_apply_changes(vty, base_xpath); + return bgp_vty_return(vty, ret); } -DEFUN_YANG (no_neighbor_timers, - no_neighbor_timers_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> timers [(0-65535) (0-65535)]", - NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "BGP per neighbor timers\n" - "Keepalive interval\n" - "Holdtime\n") +static int peer_timers_unset_vty(struct vty *vty, const char *ip_str) { - int idx_peer = 2; - char base_xpath[XPATH_MAXLEN]; + int ret; + struct peer *peer; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, ip_str); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./timers/hold-time", NB_OP_DESTROY, NULL); - - nb_cli_enqueue_change(vty, "./timers/keepalive", NB_OP_DESTROY, NULL); + ret = peer_timers_unset(peer); - return nb_cli_apply_changes(vty, base_xpath); + return bgp_vty_return(vty, ret); } -DEFUN_YANG (neighbor_timers_connect, - neighbor_timers_connect_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> timers connect (1-65535)", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "BGP per neighbor timers\n" - "BGP connect timer\n" - "Connect timer\n") +DEFUN (neighbor_timers, + neighbor_timers_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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 = 4; - char base_xpath[XPATH_MAXLEN]; + 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); +} + +DEFUN (no_neighbor_timers, + no_neighbor_timers_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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); +} + - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) +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) return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./timers/connect-time", NB_OP_MODIFY, - argv[idx_number]->arg); + connect = strtoul(time_str, NULL, 10); - return nb_cli_apply_changes(vty, base_xpath); + ret = peer_timers_connect_set(peer, connect); + + return bgp_vty_return(vty, ret); } -DEFUN_YANG (no_neighbor_timers_connect, - no_neighbor_timers_connect_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> timers connect [(1-65535)]", - NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "BGP per neighbor timers\n" - "BGP connect timer\n" - "Connect timer\n") +static int peer_timers_connect_unset_vty(struct vty *vty, const char *ip_str) { - int idx_peer = 2; - char base_xpath[XPATH_MAXLEN]; + int ret; + struct peer *peer; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, ip_str); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./timers/connect-time", NB_OP_DESTROY, - NULL); + ret = peer_timers_connect_unset(peer); - return nb_cli_apply_changes(vty, base_xpath); + return bgp_vty_return(vty, ret); +} + +DEFUN (neighbor_timers_connect, + neighbor_timers_connect_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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); +} + +DEFUN (no_neighbor_timers_connect, + no_neighbor_timers_connect_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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); } DEFPY (neighbor_timers_delayopen, @@ -7719,47 +7094,53 @@ DEFPY (no_neighbor_timers_delayopen, return CMD_SUCCESS; } -DEFUN_YANG (neighbor_advertise_interval, - neighbor_advertise_interval_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> advertisement-interval (0-600)", - NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Minimum interval between sending BGP routing updates\n" - "time in seconds\n") +static int peer_advertise_interval_vty(struct vty *vty, const char *ip_str, + const char *time_str, int set) { - int idx_peer = 1; - int idx_number = 3; - char base_xpath[XPATH_MAXLEN]; + int ret; + struct peer *peer; + uint32_t routeadv = 0; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, ip_str); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./timers/advertise-interval", NB_OP_MODIFY, - argv[idx_number]->arg); + if (time_str) + routeadv = strtoul(time_str, NULL, 10); - return nb_cli_apply_changes(vty, base_xpath); + if (set) + ret = peer_advertise_interval_set(peer, routeadv); + else + ret = peer_advertise_interval_unset(peer); + + return bgp_vty_return(vty, ret); } -DEFUN_YANG (no_neighbor_advertise_interval, - no_neighbor_advertise_interval_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> advertisement-interval [(0-600)]", - NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Minimum interval between sending BGP routing updates\n" - "time in seconds\n") +DEFUN (neighbor_advertise_interval, + neighbor_advertise_interval_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> advertisement-interval (0-600)", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR2 + "Minimum interval between sending BGP routing updates\n" + "time in seconds\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/advertise-interval", NB_OP_DESTROY, - NULL); + int idx_peer = 1; + int idx_number = 3; + return peer_advertise_interval_vty(vty, argv[idx_peer]->arg, + argv[idx_number]->arg, 1); +} - return nb_cli_apply_changes(vty, base_xpath); +DEFUN (no_neighbor_advertise_interval, + no_neighbor_advertise_interval_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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); } @@ -7811,42 +7192,50 @@ DEFUN (no_bgp_set_route_map_delay_timer, return CMD_SUCCESS; } -DEFUN_YANG (neighbor_interface, - neighbor_interface_cmd, - "neighbor <A.B.C.D|X:X::X:X> interface WORD", - NEIGHBOR_STR NEIGHBOR_ADDR_STR - "Interface\n" - "Interface name\n") +/* neighbor interface */ +static int peer_interface_vty(struct vty *vty, const char *ip_str, + const char *str) { - int idx_ip = 1; - int idx_word = 3; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; - snprintf(base_xpath, sizeof(base_xpath), FRR_BGP_NEIGHBOR_NUM_XPATH, - argv[idx_ip]->arg, ""); + 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; + } - nb_cli_enqueue_change(vty, "./local-interface", NB_OP_MODIFY, - argv[idx_word]->arg); + if (str) + peer_interface_set(peer, str); + else + peer_interface_unset(peer); - return nb_cli_apply_changes(vty, base_xpath); + return CMD_SUCCESS; } -DEFUN_YANG (no_neighbor_interface, - no_neighbor_interface_cmd, - "no neighbor <A.B.C.D|X:X::X:X|WORD> interface WORD", - NO_STR NEIGHBOR_STR NEIGHBOR_ADDR_STR2 - "Interface\n" - "Interface name\n") +DEFUN (neighbor_interface, + neighbor_interface_cmd, + "neighbor <A.B.C.D|X:X::X:X> interface WORD", + NEIGHBOR_STR + NEIGHBOR_ADDR_STR + "Interface\n" + "Interface name\n") { - int idx_peer = 2; - 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); + int idx_ip = 1; + int idx_word = 3; + return peer_interface_vty(vty, argv[idx_ip]->arg, argv[idx_word]->arg); +} - return nb_cli_apply_changes(vty, base_xpath); +DEFUN (no_neighbor_interface, + no_neighbor_interface_cmd, + "no neighbor <A.B.C.D|X:X::X:X|WORD> 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); } DEFUN (neighbor_distribute_list, @@ -8810,28 +8199,38 @@ 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_YANG (neighbor_ttl_security, - neighbor_ttl_security_cmd, - "neighbor <A.B.C.D|X:X::X:X|WORD> 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 (neighbor_ttl_security, + neighbor_ttl_security_cmd, + "neighbor <A.B.C.D|X:X::X:X|WORD> 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; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; + int gtsm_hops; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./ttl-security", NB_OP_MODIFY, - argv[idx_number]->arg); + gtsm_hops = strtoul(argv[idx_number]->arg, NULL, 10); - return nb_cli_apply_changes(vty, base_xpath); + /* + * 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)); } DEFUN (no_neighbor_ttl_security, @@ -8845,16 +8244,13 @@ DEFUN (no_neighbor_ttl_security, "Number of hops to BGP peer\n") { int idx_peer = 2; - char base_xpath[XPATH_MAXLEN]; + struct peer *peer; - if (peer_and_group_lookup_nb(vty, argv[idx_peer]->arg, base_xpath, - sizeof(base_xpath), NULL) - < 0) + peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg); + if (!peer) return CMD_WARNING_CONFIG_FAILED; - nb_cli_enqueue_change(vty, "./ttl-security", NB_OP_DESTROY, NULL); - - return nb_cli_apply_changes(vty, base_xpath); + return bgp_vty_return(vty, peer_ttl_security_hops_unset(peer)); } DEFUN (neighbor_addpath_tx_all_paths, diff --git a/bgpd/bgp_vty.h b/bgpd/bgp_vty.h index 04a47f6f62..fbf9e7a87b 100644 --- a/bgpd/bgp_vty.h +++ b/bgpd/bgp_vty.h @@ -201,20 +201,5 @@ 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, - 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 */ |
