summaryrefslogtreecommitdiff
path: root/pimd/pim_mroute.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2016-06-17 20:43:21 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2016-06-17 20:43:21 -0400
commit744d91b3c6bfec40f78f97be34a2301dc9a5fbf5 (patch)
treed619170c1168861ff128710160100e412f6fe5cf /pimd/pim_mroute.c
parent515b39d7042d129238a313ea0aba37ee4b0742c7 (diff)
pimd: Separate pim vif index spot from ifindex
Allow pim to separate out the pim vif index from the ifindex. This change will allow pim to work with up to 255(MAXVIFS) interfaces, while also allowing the interface ifindex to be whatever number it needs to be. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_mroute.c')
-rw-r--r--pimd/pim_mroute.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c
index 6f5fe480f2..f85f422298 100644
--- a/pimd/pim_mroute.c
+++ b/pimd/pim_mroute.c
@@ -23,6 +23,7 @@
#include <zebra.h>
#include "log.h"
#include "privs.h"
+#include "if.h"
#include "pimd.h"
#include "pim_mroute.h"
@@ -449,8 +450,9 @@ int pim_mroute_socket_disable()
would be used for multicast forwarding, a corresponding multicast
interface must be added to the kernel.
*/
-int pim_mroute_add_vif(int vif_index, struct in_addr ifaddr, unsigned char flags)
+int pim_mroute_add_vif(struct interface *ifp, struct in_addr ifaddr, unsigned char flags)
{
+ struct pim_interface *pim_ifp = ifp->info;
struct vifctl vc;
int err;
@@ -461,8 +463,8 @@ int pim_mroute_add_vif(int vif_index, struct in_addr ifaddr, unsigned char flags
}
memset(&vc, 0, sizeof(vc));
- vc.vifc_vifi = vif_index;
- vc.vifc_lcl_ifindex = vif_index;
+ vc.vifc_vifi = pim_ifp->mroute_vif_index;
+ vc.vifc_lcl_ifindex = ifp->ifindex;
vc.vifc_flags = flags;
vc.vifc_threshold = PIM_MROUTE_MIN_TTL;
vc.vifc_rate_limit = 0;
@@ -482,7 +484,7 @@ int pim_mroute_add_vif(int vif_index, struct in_addr ifaddr, unsigned char flags
zlog_warn("%s %s: failure: setsockopt(fd=%d,IPPROTO_IP,MRT_ADD_VIF,vif_index=%d,ifaddr=%s,flag=%d): errno=%d: %s",
__FILE__, __PRETTY_FUNCTION__,
- qpim_mroute_socket_fd, vif_index, ifaddr_str, flags,
+ qpim_mroute_socket_fd, ifp->ifindex, ifaddr_str, flags,
e, safe_strerror(e));
errno = e;
return -2;