forked from Mirror/frr
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:
parent
c3bd5a10f1
commit
ea3d967be0
|
@ -1039,7 +1039,7 @@ int pim_if_del_vif(struct interface *ifp)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pim_mroute_del_vif(pim_ifp->mroute_vif_index);
|
pim_mroute_del_vif(ifp);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Update vif_index
|
Update vif_index
|
||||||
|
|
|
@ -782,7 +782,7 @@ int pim_mroute_add_vif(struct interface *ifp, struct in_addr ifaddr,
|
||||||
}
|
}
|
||||||
#endif
|
#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));
|
(void *)&vc, sizeof(vc));
|
||||||
if (err) {
|
if (err) {
|
||||||
char ifaddr_str[INET_ADDRSTRLEN];
|
char ifaddr_str[INET_ADDRSTRLEN];
|
||||||
|
@ -792,37 +792,37 @@ int pim_mroute_add_vif(struct interface *ifp, struct in_addr ifaddr,
|
||||||
|
|
||||||
zlog_warn(
|
zlog_warn(
|
||||||
"%s %s: failure: setsockopt(fd=%d,IPPROTO_IP,MRT_ADD_VIF,vif_index=%d,ifaddr=%s,flag=%d): errno=%d: %s",
|
"%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,
|
__FILE__, __PRETTY_FUNCTION__,
|
||||||
ifp->ifindex, ifaddr_str, flags, errno,
|
pim_ifp->pim->mroute_socket, ifp->ifindex, ifaddr_str,
|
||||||
safe_strerror(errno));
|
flags, errno, safe_strerror(errno));
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
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;
|
struct vifctl vc;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (PIM_DEBUG_MROUTE) {
|
if (PIM_DEBUG_MROUTE)
|
||||||
struct interface *ifp = pim_if_find_by_vif_index(vif_index);
|
|
||||||
zlog_debug("%s %s: Del Vif %d (%s) ", __FILE__,
|
zlog_debug("%s %s: Del Vif %d (%s) ", __FILE__,
|
||||||
__PRETTY_FUNCTION__, vif_index,
|
__PRETTY_FUNCTION__, pim_ifp->mroute_vif_index,
|
||||||
ifp ? ifp->name : "NULL");
|
ifp->name);
|
||||||
}
|
|
||||||
|
|
||||||
memset(&vc, 0, sizeof(vc));
|
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));
|
(void *)&vc, sizeof(vc));
|
||||||
if (err) {
|
if (err) {
|
||||||
zlog_warn(
|
zlog_warn(
|
||||||
"%s %s: failure: setsockopt(fd=%d,IPPROTO_IP,MRT_DEL_VIF,vif_index=%d): errno=%d: %s",
|
"%s %s: failure: setsockopt(fd=%d,IPPROTO_IP,MRT_DEL_VIF,vif_index=%d): errno=%d: %s",
|
||||||
__FILE__, __PRETTY_FUNCTION__, pimg->mroute_socket,
|
__FILE__, __PRETTY_FUNCTION__,
|
||||||
vif_index, errno, safe_strerror(errno));
|
pim_ifp->pim->mroute_socket, pim_ifp->mroute_vif_index,
|
||||||
|
errno, safe_strerror(errno));
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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,
|
int pim_mroute_add_vif(struct interface *ifp, struct in_addr ifaddr,
|
||||||
unsigned char flags);
|
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_add(struct channel_oil *c_oil, const char *name);
|
||||||
int pim_mroute_del(struct channel_oil *c_oil, const char *name);
|
int pim_mroute_del(struct channel_oil *c_oil, const char *name);
|
||||||
|
|
Loading…
Reference in a new issue