]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: For non-default vrf's bind the msdp socket to the vrf
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 7 Jun 2017 20:24:07 +0000 (16:24 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 24 Jul 2017 17:51:39 +0000 (13:51 -0400)
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_msdp_socket.c

index 897a1b3d04518d460a860b0f121b5c7edf5d2460..ee3cc9698085bb69c0fcd210d8070ff99420aa24 100644 (file)
 #include <lib/sockunion.h>
 #include <lib/thread.h>
 #include <lib/vty.h>
+#include <lib/if.h>
+#include <lib/vrf.h>
 
 #include "pimd.h"
+#include "pim_sock.h"
 
 #include "pim_msdp.h"
 #include "pim_msdp_socket.h"
@@ -214,6 +217,12 @@ int pim_msdp_sock_connect(struct pim_msdp_peer *mp)
                return -1;
        }
 
+       if (mp->pim->vrf_id != VRF_DEFAULT) {
+               struct interface *ifp =
+                       if_lookup_by_name(mp->pim->vrf->name, mp->pim->vrf_id);
+               pim_socket_bind(mp->fd, ifp);
+       }
+
        set_nonblocking(mp->fd);
 
        /* Set socket send buffer size */