]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pimd: Handle pimreg a bit better
authorDonald Sharp <sharpd@cumulusnetwroks.com>
Thu, 23 Jun 2016 15:46:57 +0000 (11:46 -0400)
committerDonald Sharp <sharpd@cumulusnetwroks.com>
Thu, 23 Jun 2016 15:46:57 +0000 (11:46 -0400)
The pimreg device is vif_index == 0.  Allow it
to be used.

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

index 87c25c0dbdd45dd1098c4198b891e54a5a221d72..1dfbd9990a5e0535b6e1a45fb40b98e3e48b0bec 100644 (file)
@@ -772,6 +772,9 @@ struct interface *pim_if_find_by_vif_index(int vif_index)
   struct listnode  *ifnode;
   struct interface *ifp;
 
+  if (vif_index == 0)
+    return if_lookup_by_name_vrf ("pimreg", VRF_DEFAULT);
+
   for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), ifnode, ifp)) {
     if (ifp->info) {
       struct pim_interface *pim_ifp;
@@ -789,7 +792,15 @@ struct interface *pim_if_find_by_vif_index(int vif_index)
  */
 int pim_if_find_vifindex_by_ifindex(int ifindex)
 {
-  return ifindex;
+  struct pim_interface *pim_ifp;
+  struct interface *ifp;
+
+  ifp = if_lookup_by_index_vrf (ifindex, VRF_DEFAULT);
+  pim_ifp = ifp->info;
+  if (!pim_ifp)
+    return -1;
+
+  return pim_ifp->mroute_vif_index;
 }
 
 int pim_if_lan_delay_enabled(struct interface *ifp)
index f4f1b472636406fbed70bffbff2288d8e12bae5e..e947ff87c5381296657c6bf613c13787e3747c01 100644 (file)
@@ -779,7 +779,7 @@ static int fib_lookup_if_vif_index(struct in_addr addr)
 
   vif_index = pim_if_find_vifindex_by_ifindex(first_ifindex);
 
-  if (vif_index < 1) {
+  if (vif_index < 0) {
     char addr_str[100];
     pim_inet4_dump("<addr?>", addr, addr_str, sizeof(addr_str));
     zlog_warn("%s %s: low vif_index=%d < 1 nexthop for address %s",