From: Hiroki Shirokura Date: Sat, 19 Dec 2020 01:42:44 +0000 (+0900) Subject: bgpd: implement nb-func to im/ex-port vrf-rib to vpn-rib (step4) X-Git-Tag: base_8.1~461^2~42 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=bc65dfafbcea33eeb7497cab0477b5bdc6458d3b;p=matthieu%2Ffrr.git bgpd: implement nb-func to im/ex-port vrf-rib to vpn-rib (step4) This commit implement the contents of following 2 functions. - bgp_global_afi_safis_afi_safi_ipv6_unicast_vpn_config_import_vpn_modify - bgp_global_afi_safis_afi_safi_ipv6_unicast_vpn_config_export_vpn_modify This implementation is based on already implemented function for ipv4. Signed-off-by: Hiroki Shirokura --- diff --git a/bgpd/bgp_nb_config.c b/bgpd/bgp_nb_config.c index 3b7d95c0f3..e83b9e20a8 100644 --- a/bgpd/bgp_nb_config.c +++ b/bgpd/bgp_nb_config.c @@ -11442,12 +11442,33 @@ int bgp_global_afi_safis_afi_safi_ipv6_unicast_vpn_config_nexthop_destroy( int bgp_global_afi_safis_afi_safi_ipv6_unicast_vpn_config_import_vpn_modify( struct nb_cb_modify_args *args) { + bool is_enable = false; + struct bgp *bgp; + switch (args->event) { case NB_EV_VALIDATE: + bgp = nb_running_get_entry(args->dnode, NULL, false); + if (!bgp) + return NB_OK; + + if (BGP_INSTANCE_TYPE_VRF != bgp->inst_type + && BGP_INSTANCE_TYPE_DEFAULT != bgp->inst_type) { + snprintf( + args->errmsg, args->errmsg_len, + "import|export vpn valid only for bgp vrf or default instance"); + return NB_ERR_VALIDATION; + } + + break; case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + if (yang_dnode_get_bool(args->dnode, NULL)) + is_enable = true; + + return bgp_global_afi_safi_ip_unicast_vpn_config_import_export_vpn_modify( + args, "import", is_enable); break; } @@ -11461,12 +11482,32 @@ int bgp_global_afi_safis_afi_safi_ipv6_unicast_vpn_config_import_vpn_modify( int bgp_global_afi_safis_afi_safi_ipv6_unicast_vpn_config_export_vpn_modify( struct nb_cb_modify_args *args) { + bool is_enable = false; + struct bgp *bgp; + switch (args->event) { case NB_EV_VALIDATE: + bgp = nb_running_get_entry(args->dnode, NULL, false); + if (!bgp) + return NB_OK; + + if (BGP_INSTANCE_TYPE_VRF != bgp->inst_type + && BGP_INSTANCE_TYPE_DEFAULT != bgp->inst_type) { + snprintf( + args->errmsg, args->errmsg_len, + "import|export vpn valid only for bgp vrf or default instance"); + return NB_ERR_VALIDATION; + } + break; case NB_EV_PREPARE: case NB_EV_ABORT: + return NB_OK; case NB_EV_APPLY: - /* TODO: implement me. */ + if (yang_dnode_get_bool(args->dnode, NULL)) + is_enable = true; + + return bgp_global_afi_safi_ip_unicast_vpn_config_import_export_vpn_modify( + args, "export", is_enable); break; }