pimd: pim_mroute_[add|del]_vif become VRF aware

Make the pim_mroute_[add|del]_vif functions be vrf aware.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2017-05-14 14:33:53 -04:00
parent c3bd5a10f1
commit ea3d967be0
3 changed files with 16 additions and 16 deletions

View file

@ -1039,7 +1039,7 @@ int pim_if_del_vif(struct interface *ifp)
return -1;
}
pim_mroute_del_vif(pim_ifp->mroute_vif_index);
pim_mroute_del_vif(ifp);
/*
Update vif_index

View file

@ -782,7 +782,7 @@ int pim_mroute_add_vif(struct interface *ifp, struct in_addr ifaddr,
}
#endif
err = setsockopt(pimg->mroute_socket, IPPROTO_IP, MRT_ADD_VIF,
err = setsockopt(pim_ifp->pim->mroute_socket, IPPROTO_IP, MRT_ADD_VIF,
(void *)&vc, sizeof(vc));
if (err) {
char ifaddr_str[INET_ADDRSTRLEN];
@ -792,37 +792,37 @@ int pim_mroute_add_vif(struct interface *ifp, struct in_addr ifaddr,
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__, pimg->mroute_socket,
ifp->ifindex, ifaddr_str, flags, errno,
safe_strerror(errno));
__FILE__, __PRETTY_FUNCTION__,
pim_ifp->pim->mroute_socket, ifp->ifindex, ifaddr_str,
flags, errno, safe_strerror(errno));
return -2;
}
return 0;
}
int pim_mroute_del_vif(int vif_index)
int pim_mroute_del_vif(struct interface *ifp)
{
struct pim_interface *pim_ifp = ifp->info;
struct vifctl vc;
int err;
if (PIM_DEBUG_MROUTE) {
struct interface *ifp = pim_if_find_by_vif_index(vif_index);
if (PIM_DEBUG_MROUTE)
zlog_debug("%s %s: Del Vif %d (%s) ", __FILE__,
__PRETTY_FUNCTION__, vif_index,
ifp ? ifp->name : "NULL");
}
__PRETTY_FUNCTION__, pim_ifp->mroute_vif_index,
ifp->name);
memset(&vc, 0, sizeof(vc));
vc.vifc_vifi = vif_index;
vc.vifc_vifi = pim_ifp->mroute_vif_index;
err = setsockopt(pimg->mroute_socket, IPPROTO_IP, MRT_DEL_VIF,
err = setsockopt(pim_ifp->pim->mroute_socket, IPPROTO_IP, MRT_DEL_VIF,
(void *)&vc, sizeof(vc));
if (err) {
zlog_warn(
"%s %s: failure: setsockopt(fd=%d,IPPROTO_IP,MRT_DEL_VIF,vif_index=%d): errno=%d: %s",
__FILE__, __PRETTY_FUNCTION__, pimg->mroute_socket,
vif_index, errno, safe_strerror(errno));
__FILE__, __PRETTY_FUNCTION__,
pim_ifp->pim->mroute_socket, pim_ifp->mroute_vif_index,
errno, safe_strerror(errno));
return -2;
}

View file

@ -168,7 +168,7 @@ int pim_mroute_socket_disable(struct pim_instance *pim);
int pim_mroute_add_vif(struct interface *ifp, struct in_addr ifaddr,
unsigned char flags);
int pim_mroute_del_vif(int vif_index);
int pim_mroute_del_vif(struct interface *ifp);
int pim_mroute_add(struct channel_oil *c_oil, const char *name);
int pim_mroute_del(struct channel_oil *c_oil, const char *name);