summaryrefslogtreecommitdiffstats
path: root/pimd/pim_pim.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2015-06-16 22:19:56 +0200
committerDonald Sharp <sharpd@cumulusnetwroks.com>2016-05-26 02:38:33 +0200
commitf6f9c0094a4e7ec2ab6d3ebcd10e4f9a763e1b7f (patch)
tree0333c4470988cc4e7dae0fe22b86dce57e0bb41a /pimd/pim_pim.c
parentpimd: Fix first DR Election (diff)
downloadfrr-f6f9c0094a4e7ec2ab6d3ebcd10e4f9a763e1b7f.tar.xz
frr-f6f9c0094a4e7ec2ab6d3ebcd10e4f9a763e1b7f.zip
pimd: Stop DR election on every hello
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>
Diffstat (limited to 'pimd/pim_pim.c')
-rw-r--r--pimd/pim_pim.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/pimd/pim_pim.c b/pimd/pim_pim.c
index 409972d4b..7dcb50199 100644
--- a/pimd/pim_pim.c
+++ b/pimd/pim_pim.c
@@ -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;
}