]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: pim_mroute_[add|del]_vif become VRF aware
authorDonald Sharp <sharpd@cumulusnetworks.com>
Sun, 14 May 2017 18:33:53 +0000 (14:33 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 24 Jul 2017 17:51:34 +0000 (13:51 -0400)
Make the pim_mroute_[add|del]_vif functions be vrf aware.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_iface.c
pimd/pim_mroute.c
pimd/pim_mroute.h

index 5e47bb19b050ae73e27492ea3fb52225bb279f49..817c64440699fcdb5556a5aa42017db911aa7390 100644 (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
index fb216bcfb323ece276fd9ca5abc6f78bd779ae42..bb4086972b603d1f2fb36b0af89bca5ce5343c10 100644 (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;
        }
 
index 9e12b18702eedced2aa3f28b7cb7b2b0da66aabb..53d0ed03c55d8cd59df8ab5d771ce3f044f7ba2b 100644 (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);