diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-06-17 20:43:21 -0400 |
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-06-17 20:43:21 -0400 |
| commit | 744d91b3c6bfec40f78f97be34a2301dc9a5fbf5 (patch) | |
| tree | d619170c1168861ff128710160100e412f6fe5cf /pimd/pim_mroute.c | |
| parent | 515b39d7042d129238a313ea0aba37ee4b0742c7 (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.c | 10 |
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; |
