diff options
author | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-06-16 13:19:56 -0700 |
---|---|---|
committer | Paul Jakma <paul@quagga.net> | 2015-08-21 17:25:18 +0100 |
commit | 73de55a53c78d572f63d45115681567a4c0cef65 (patch) | |
tree | a6e671a17ca5f9098be0c8c65665a2be0162fd68 | |
parent | 76240f11e640824438605012a8e44c968bc9e5b0 (diff) | |
download | quagga-73de55a53c78d572f63d45115681567a4c0cef65.tar.bz2 quagga-73de55a53c78d572f63d45115681567a4c0cef65.tar.xz |
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>
-rw-r--r-- | pimd/pim_pim.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/pimd/pim_pim.c b/pimd/pim_pim.c index 409972d4..7dcb5019 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; } |