From: Donald Sharp Date: Sun, 14 May 2017 18:33:53 +0000 (-0400) Subject: pimd: pim_mroute_[add|del]_vif become VRF aware X-Git-Tag: frr-4.0-dev~468^2~136 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=ea3d967be001d54c2cda0e35ed3527bda61c762c;p=mirror%2Ffrr.git 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 --- diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c index 5e47bb19b0..817c644406 100644 --- a/pimd/pim_iface.c +++ b/pimd/pim_iface.c @@ -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 diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c index fb216bcfb3..bb4086972b 100644 --- a/pimd/pim_mroute.c +++ b/pimd/pim_mroute.c @@ -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; } diff --git a/pimd/pim_mroute.h b/pimd/pim_mroute.h index 9e12b18702..53d0ed03c5 100644 --- a/pimd/pim_mroute.h +++ b/pimd/pim_mroute.h @@ -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);