From 81bd033cbb535281388616f9beb99c6882ae67c8 Mon Sep 17 00:00:00 2001 From: Renato Westphal Date: Sat, 19 Jan 2019 17:19:13 -0200 Subject: [PATCH] lib: remove the vrf_is_mapped_on_netns() function Now that all daemons receive the VRF backend from zebra, we can get rid of vrf_is_mapped_on_netns() in favor of using the more convenient vrf_is_backend_netns() function, which doesn't require any argument. This commit also fixes the following problem: debian(config)# ip route 50.0.0.0/8 blackhole vrf FAKE table 2 % table param only available when running on netns-based vrfs Even when zebra was started with the --vrfwnetns, the error above would be displayed since the VRF FAKE didn't exist, which would make vrf_is_mapped_on_netns() return 0 incorrectly. Using vrf_is_backend_netns() this problem doesn't happen anymore. Signed-off-by: Renato Westphal --- bgpd/bgp_network.c | 3 +-- lib/vrf.c | 9 +-------- lib/vrf.h | 3 --- staticd/static_vty.c | 24 ++++++++++++------------ 4 files changed, 14 insertions(+), 25 deletions(-) diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c index e15b8f4ec3..4153da5a64 100644 --- a/bgpd/bgp_network.c +++ b/bgpd/bgp_network.c @@ -670,8 +670,7 @@ static int bgp_listener(int sock, struct sockaddr *sa, socklen_t salen, listener->fd = sock; /* this socket needs a change of ns. record bgp back pointer */ - if (bgp->vrf_id != VRF_DEFAULT && vrf_is_mapped_on_netns( - vrf_lookup_by_id(bgp->vrf_id))) + if (bgp->vrf_id != VRF_DEFAULT && vrf_is_backend_netns()) listener->bgp = bgp; memcpy(&listener->su, sa, salen); diff --git a/lib/vrf.c b/lib/vrf.c index 0c82f6a3cd..f9f14822cb 100644 --- a/lib/vrf.c +++ b/lib/vrf.c @@ -716,13 +716,6 @@ int vrf_netns_handler_create(struct vty *vty, struct vrf *vrf, char *pathname, return CMD_SUCCESS; } -int vrf_is_mapped_on_netns(struct vrf *vrf) -{ - if (!vrf || vrf->data.l.netns_name[0] == '\0') - return 0; - return 1; -} - /* vrf CLI commands */ DEFUN_NOSH(vrf_exit, vrf_exit_cmd, @@ -953,7 +946,7 @@ int vrf_bind(vrf_id_t vrf_id, int fd, char *name) if (fd < 0 || name == NULL) return fd; - if (vrf_is_mapped_on_netns(vrf_lookup_by_id(vrf_id))) + if (vrf_is_backend_netns()) return fd; #ifdef SO_BINDTODEVICE ret = setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, name, strlen(name)+1); diff --git a/lib/vrf.h b/lib/vrf.h index fe4fc77250..e80796f480 100644 --- a/lib/vrf.h +++ b/lib/vrf.h @@ -240,9 +240,6 @@ extern void vrf_set_default_name(const char *default_name, bool force); extern const char *vrf_get_default_name(void); #define VRF_DEFAULT_NAME vrf_get_default_name() -/* VRF is mapped on netns or not ? */ -int vrf_is_mapped_on_netns(struct vrf *vrf); - /* VRF switch from NETNS */ extern int vrf_switch_to_netns(vrf_id_t vrf_id); extern int vrf_switchback_to_initial(void); diff --git a/staticd/static_vty.c b/staticd/static_vty.c index ae0026cc97..f09c304359 100644 --- a/staticd/static_vty.c +++ b/staticd/static_vty.c @@ -775,7 +775,7 @@ DEFPY(ip_route_blackhole, "Table to configure\n" "The table number to configure\n") { - if (table_str && vrf && !vrf_is_mapped_on_netns(vrf_lookup_by_name(vrf))) { + if (table_str && vrf && !vrf_is_backend_netns()) { vty_out(vty, "%% table param only available when running on netns-based vrfs\n"); return CMD_WARNING_CONFIG_FAILED; @@ -814,7 +814,7 @@ DEFPY(ip_route_blackhole_vrf, VTY_DECLVAR_CONTEXT(vrf, vrf); struct static_vrf *svrf = vrf->info; - if (table_str && !vrf_is_mapped_on_netns(vrf)) { + if (table_str && !vrf_is_backend_netns()) { vty_out(vty, "%% table param only available when running on netns-based vrfs\n"); return CMD_WARNING_CONFIG_FAILED; @@ -880,7 +880,7 @@ DEFPY(ip_route_address_interface, return CMD_WARNING_CONFIG_FAILED; } - if (table_str && vrf && !vrf_is_mapped_on_netns(vrf_lookup_by_name(vrf))) { + if (table_str && vrf && !vrf_is_backend_netns()) { vty_out(vty, "%% table param only available when running on netns-based vrfs\n"); return CMD_WARNING_CONFIG_FAILED; @@ -938,7 +938,7 @@ DEFPY(ip_route_address_interface_vrf, struct static_vrf *svrf = vrf->info; struct static_vrf *nh_svrf; - if (table_str && !vrf_is_mapped_on_netns(vrf)) { + if (table_str && !vrf_is_backend_netns()) { vty_out(vty, "%% table param only available when running on netns-based vrfs\n"); return CMD_WARNING_CONFIG_FAILED; @@ -999,7 +999,7 @@ DEFPY(ip_route, struct static_vrf *nh_svrf; const char *flag = NULL; - if (table_str && vrf && !vrf_is_mapped_on_netns(vrf_lookup_by_name(vrf))) { + if (table_str && vrf && !vrf_is_backend_netns()) { vty_out(vty, "%% table param only available when running on netns-based vrfs\n"); return CMD_WARNING_CONFIG_FAILED; @@ -1065,7 +1065,7 @@ DEFPY(ip_route_vrf, struct static_vrf *nh_svrf; const char *flag = NULL; - if (table_str && !vrf_is_mapped_on_netns(vrf)) { + if (table_str && !vrf_is_backend_netns()) { vty_out(vty, "%% table param only available when running on netns-based vrfs\n"); return CMD_WARNING_CONFIG_FAILED; @@ -1119,7 +1119,7 @@ DEFPY(ipv6_route_blackhole, "Table to configure\n" "The table number to configure\n") { - if (table_str && vrf && !vrf_is_mapped_on_netns(vrf_lookup_by_name(vrf))) { + if (table_str && vrf && !vrf_is_backend_netns()) { vty_out(vty, "%% table param only available when running on netns-based vrfs\n"); return CMD_WARNING_CONFIG_FAILED; @@ -1158,7 +1158,7 @@ DEFPY(ipv6_route_blackhole_vrf, VTY_DECLVAR_CONTEXT(vrf, vrf); struct static_vrf *svrf = vrf->info; - if (table_str && !vrf_is_mapped_on_netns(vrf)) { + if (table_str && !vrf_is_backend_netns()) { vty_out(vty, "%% table param only available when running on netns-based vrfs\n"); return CMD_WARNING_CONFIG_FAILED; @@ -1213,7 +1213,7 @@ DEFPY(ipv6_route_address_interface, struct static_vrf *nh_svrf; const char *flag = NULL; - if (table_str && vrf && !vrf_is_mapped_on_netns(vrf_lookup_by_name(vrf))) { + if (table_str && vrf && !vrf_is_backend_netns()) { vty_out(vty, "%% table param only available when running on netns-based vrfs\n"); return CMD_WARNING_CONFIG_FAILED; @@ -1282,7 +1282,7 @@ DEFPY(ipv6_route_address_interface_vrf, struct static_vrf *nh_svrf; const char *flag = NULL; - if (table_str && !vrf_is_mapped_on_netns(vrf)) { + if (table_str && !vrf_is_backend_netns()) { vty_out(vty, "%% table param only available when running on netns-based vrfs\n"); return CMD_WARNING_CONFIG_FAILED; @@ -1343,7 +1343,7 @@ DEFPY(ipv6_route, struct static_vrf *nh_svrf; const char *flag = NULL; - if (table_str && vrf && !vrf_is_mapped_on_netns(vrf_lookup_by_name(vrf))) { + if (table_str && vrf && !vrf_is_backend_netns()) { vty_out(vty, "%% table param only available when running on netns-based vrfs\n"); return CMD_WARNING_CONFIG_FAILED; @@ -1409,7 +1409,7 @@ DEFPY(ipv6_route_vrf, struct static_vrf *nh_svrf; const char *flag = NULL; - if (table_str && !vrf_is_mapped_on_netns(vrf)) { + if (table_str && !vrf_is_backend_netns()) { vty_out(vty, "%% table param only available when running on netns-based vrfs\n"); return CMD_WARNING_CONFIG_FAILED;