summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-06-07 16:24:07 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-07-24 13:51:39 -0400
commit62fde40935d0493644e5c847d852e86f684f3380 (patch)
treec19be80c079f37992e424c6c3fc4b0340ee6fc30
parent56243c3a4ae215314efd6f478034c00e287de685 (diff)
pimd: For non-default vrf's bind the msdp socket to the vrf
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
-rw-r--r--pimd/pim_msdp_socket.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/pimd/pim_msdp_socket.c b/pimd/pim_msdp_socket.c
index 897a1b3d04..ee3cc96980 100644
--- a/pimd/pim_msdp_socket.c
+++ b/pimd/pim_msdp_socket.c
@@ -24,8 +24,11 @@
#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 */