summaryrefslogtreecommitdiff
path: root/pimd/pim_msdp_socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_msdp_socket.c')
-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 */