]> git.puffer.fish Git - matthieu/frr.git/commitdiff
lib: change vrf_is_mapped_on_netns API
authorPhilippe Guibert <philippe.guibert@6wind.com>
Wed, 22 Aug 2018 07:19:04 +0000 (09:19 +0200)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Wed, 22 Aug 2018 07:19:04 +0000 (09:19 +0200)
The function handles not a vrf pointer instead of a vrf_id value.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
bgpd/bgp_network.c
lib/if.c
lib/vrf.c
lib/vrf.h

index 0664fdfd1cdd720ebe67b9f2993a8e906b14f847..22d5d35c822160389a59636dbeb1be4f373cf56f 100644 (file)
@@ -672,7 +672,8 @@ 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(bgp->vrf_id))
+       if (bgp->vrf_id != VRF_DEFAULT && vrf_is_mapped_on_netns(
+                                               vrf_lookup_by_id(bgp->vrf_id)))
                listener->bgp = bgp;
 
        memcpy(&listener->su, sa, salen);
index 6023624dc1bdf1d3401c5c90c63857353cf3d98b..11c4f1b5dc09ae29dd21dd47f73203b8d8c91665 100644 (file)
--- a/lib/if.c
+++ b/lib/if.c
@@ -393,7 +393,8 @@ struct interface *if_get_by_name(const char *name, vrf_id_t vrf_id, int vty)
         * this should not be considered as an update
         * then create the new interface
         */
-       if (ifp->vrf_id != vrf_id && vrf_is_mapped_on_netns(vrf_id))
+       if (ifp->vrf_id != vrf_id && vrf_is_mapped_on_netns(
+                                       vrf_lookup_by_id(vrf_id)))
                return if_create(name, vrf_id);
        /* If it came from the kernel
         * or by way of zclient, believe it and update
index 36111dfeae4ceebe327565bb309f809fc2483fdb..3c7342bb98a2e9c071fce0c97fe7fee1f76b31bb 100644 (file)
--- a/lib/vrf.c
+++ b/lib/vrf.c
@@ -682,10 +682,8 @@ int vrf_netns_handler_create(struct vty *vty, struct vrf *vrf, char *pathname,
        return CMD_SUCCESS;
 }
 
-int vrf_is_mapped_on_netns(vrf_id_t vrf_id)
+int vrf_is_mapped_on_netns(struct vrf *vrf)
 {
-       struct vrf *vrf = vrf_lookup_by_id(vrf_id);
-
        if (!vrf || vrf->data.l.netns_name[0] == '\0')
                return 0;
        if (vrf->vrf_id == VRF_DEFAULT)
@@ -887,7 +885,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_id))
+       if (vrf_is_mapped_on_netns(vrf_lookup_by_id(vrf_id)))
                return fd;
 #ifdef SO_BINDTODEVICE
        ret = setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, name, strlen(name)+1);
index 0f4f36be507a4172e6d58d7123370f4990b6e1da..56ba101ff0cf97bd038feb931933e500acea0b15 100644 (file)
--- a/lib/vrf.h
+++ b/lib/vrf.h
@@ -237,7 +237,7 @@ extern vrf_id_t vrf_get_default_id(void);
 #define VRF_DEFAULT vrf_get_default_id()
 
 /* VRF is mapped on netns or not ? */
-int vrf_is_mapped_on_netns(vrf_id_t vrf_id);
+int vrf_is_mapped_on_netns(struct vrf *vrf);
 
 /* VRF switch from NETNS */
 extern int vrf_switch_to_netns(vrf_id_t vrf_id);