]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Stop DR election on every hello
authorDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 16 Jun 2015 20:19:56 +0000 (13:19 -0700)
committerDonald Sharp <sharpd@cumulusnetwroks.com>
Thu, 26 May 2016 00:38:33 +0000 (20:38 -0400)
The DR election is occurring on every hello received.
This is because the hello receive packet returns a 0
for any successfully received packet.  PIMD then looked
at the 0 returned and did a DR election.

Code was inspected for the cases where DR should happen:
(A) Interface ip address change
(B) DR priority in hello packet changes
(C) Received a new neighbor on an interface
(D) Neighbor timer pops.

Each of these initiate a DR election in the code currently.

Testing was initiated on a pim network:
tor-11# show ip pim designated-router
NonPri: Number of neighbors missing DR Priority hello option

Interface Address         DR              Uptime   Elections Changes NonPri
br1       20.0.15.1       20.0.15.1       00:08:16         1       1      0
swp1      169.254.0.10    169.254.0.10    00:08:16         2       1      0
swp2      169.254.0.26    169.254.0.26    00:08:16         2       1      0
tor-11#

As you can see Elections == 2.  This is because pimd performs
an election on (A) and (C) above.  I see no need to modify
(A) to check if we have any knowledge of the interface before
this call.

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

index 409972d4b3be496216f80442d7198cbd3fe9108c..7dcb501997b8df59baf9decad298b93b484fc920 100644 (file)
@@ -211,9 +211,6 @@ int pim_pim_packet(struct interface *ifp, uint8_t *buf, size_t len)
                  ip_hdr->ip_src,
                  pim_msg + PIM_MSG_HEADER_LEN,
                  pim_msg_len - PIM_MSG_HEADER_LEN);
-    if (!result) {
-      pim_if_dr_election(ifp); /* PIM Hello message is received */
-    }
     return result;
   }